Re: Цікаві задачі
Вкусіть мене за сраку. Мисліть ширше.
А щоб вас підняло та й гепнуло А ви точно програміст?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Алгоритми та структури даних, технології → Цікаві задачі
Сторінки Попередня 1 … 14 15 16 17 18 19 20 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
Вкусіть мене за сраку. Мисліть ширше.
А щоб вас підняло та й гепнуло А ви точно програміст?
Ідея полягала в тому, щоб познайомити форумчан з магічними числами і їх застосуванням в програмуванні.
Ідея полягала в тому, щоб познайомити форумчан з магічними числами і їх застосуванням в програмуванні.
Їх не треба застосовувати.
leofun01 написав:Ідея полягала в тому, щоб познайомити форумчан з магічними числами і їх застосуванням в програмуванні.
Їх не треба застосовувати.
Я не кажу, що їх треба застосовувати замість звичайних лічильників.
Але вони можуть бути дуже корисними для :
хешування;
шифрування;
обфускації;
генерування псевдо-випадкових чисел;
написання потенційно небезпечних програм.
В асемблері взагалі відкриваються величезні можливості для їх застосування.
Не сперечайтеся. Є два поняття магічних чисел у програмуванні.
* Просто константа-літерал, або обрана майже довільно, або й загальновідома. Причому в інших місцях ця ж стала може використовуватися для іншого. Наприклад, десь 4 це число можливих з'єднань на IP, а поруч - число байтів у 32-бітному слові. "Магічність" тут у простій незрозумілості й безумовно шкідлива.
* Спеціально підібране число, яке прискорює чи спрощує якісь операції. Як приклад, окрім цієї задачі, можна навести множники, які разом зі зсувом замінюють ділення на константу для тих архітектур, де апаратного ділення нема чи воно повільне. Та навіть поліном crc у певному сенсі "магічний". Навіть якщо це число іменоване (і відкоментоване у місці визначення), скрізь у програмі використовується по імені, а не літералом, — воно залишається "магічним".
Хто не хоче відкивати яя шчодня до Різдва, а розвязувати вправи: https://adventofcode.com/
Дешчо припізнив — на два дня, але перші вправи досї можна розвязувати. Бачу, ньої вже тут колись давно згадували, тому просто нагадаю.
Долучуся і я.
Задача формулюється так:
Є дев'ять однозначних чисел від 1 до 9.
Achtung!! Нуля серед них немає.
Позначимо їх буквами r,e,s,p,u,b,l,i,k.
Сподіваюсь, що всі зрозуміли що r не обов'язково дорівнює 1,
а може мати будь яке значення.
Треба знайти всі варіанти, в яких числа зв'язані співвідношенням:
r * es = pub = l * ik
тобто всі числа задіяні по разу
Наприклад, 3 * 58 = 174 = 29 * 6
або 2 * 78 = 156 = 4 * 39
▼Python
Тобто їх всього два варіанта??
Я чекав більшого...
Тобто їх всього два варіанта??
Я чекав більшого...
По перше: не 2, а 4.
По друге: вам дали готовий робочий код з результатом роботи цього коду. Якого "більшого" ви чекали ?
elektryk написав:Тобто їх всього два варіанта??
Я чекав більшого...
По перше: не 2, а 4.
По друге: вам дали готовий робочий код з результатом роботи цього коду. Якого "більшого" ви чекали ?
Я вибачаюсь, за невдале висловлювання. Я думав, що результатів буде при наймі два десятки...
Що стосується не 2, а 4, то від перестановки монжників добуток не міняється...
Наскільки я розумію, треба взяти всі можливі перестановки (а їх буде 9!)
і прогнати по умові.
Долучуся і я.
Задача формулюється так:
Є дев'ять однозначних чисел від 1 до 9.
Achtung!! Нуля серед них немає.
Позначимо їх буквами r,e,s,p,u,b,l,i,k.
Сподіваюсь, що всі зрозуміли що r не обов'язково дорівнює 1,
а може мати будь яке значення.
Треба знайти всі варіанти, в яких числа зв'язані співвідношенням:
r * es = pub = l * ik
тобто всі числа задіяні по разу
Наприклад, 3 * 58 = 174 = 29 * 6
або 2 * 78 = 156 = 4 * 39
▼Python
якось так, коли строга статична типізація,
та ліньки запихати все в один рядочок
haskell, перестановки, можливо комусь цікаво
(доповнення до попереднього повідомлення)
upd. по темі перестановок і комбінацій, ще таке писав-грався
+
я грався з генеруванням біткоін адрес, при роботі з безкінечними списками,
і дізнався, що є ще така функція, як replicateM
https://hackage.haskell.org/package/bas … replicateM
визначена ця функція в
https://hackage.haskell.org/package/bas … replicateM
при цьому виявив, що в цієї коробочно-бібліотечної функції є недолік
довелось мізкувати, як недолік цей виправити)
(гугл рулить)
задача №2 яка в 1 повідомленні
//згодиться?
#include <stdio.h>
int main()
{
int v1 = 5;
int v2 = 3;
v1 += v2;
v2 -= v1;
v2 = -v2;
v1 -= v2;
printf("%i %i", v1, v2);
}
Ось що значить вигадати велосипед заново ))
Чи можна перевірити, чи дані у однозв'язному списку є паліндромом, при цьому шоб O(n) по часу, і O(1) по використаній пам'яті?
Я поки шо не бачу рішення без занесення даних зі списку в масив. По часу виходе O(n/2), бо нам треба перевірити, чи дані в масиві дзеркальні, а для цього треба зробити n/2 перевірок, але по пам'яті виходе O(n), бо створюємо додатковий масив для збереження даних.
осьо код
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var isPalindrome = function(head) {
let current = head;
let arr = [];
do {
arr.push(current.val);
} while (current = current.next);
const mid = arr.length / 2;
for (let i = arr.length - 1; i >= mid; i--) {
if (arr[i] !== arr[arr.length - i - 1]) return false;
}
return true;
};
Ну, якщо витрати стеку не враховувати - то рекурсією саме воно і буде.
Інакше, боюся, О(1) не вийде.