Ничего не понятно, но залипательно
Просьба к шарящим подсказать описание и теги.
Как НЕ уснуть ночью или судоку с одной стартовой цифрой
Пост для тех, кто любит головоломки, судоку и решать всякие задачки.
Вообще это не про меня, и судоку я решала последний раз лет 5, а то и больше назад. Но вчера поздно вечером я тупила в интернете, тыкая на разные ссылки и читая ненужную, но почему-то именно ночью особенно увлекательную информацию, когда на каком-то англоязычном ресурсе наткнулась на судоку всего С ОДНОЙ СТАРТОВОЙ ЦИФРОЙ.
Вот так это выглядело:
Глаза слипались, и я решила 5 минуточек поискать, с чего тут можно начать, и есть ли логика в этом всем без подбора.
Почти 3 часа спустя я наконец решила эту задачку. 3 раза делала ошибку, потому что ночью мозг уже тупил, я забывала прописать в каких-то клетках возможную цифру или неправильно считала возможности, поэтому каждый раз приходилось откатывать решение к моменту "до ошибки".
По моим прикидкам, если считать без ошибок с самого начала, то в целом за 1 час можно этот судоку решить. Но надо прямо хорошо видеть закономерности и не лагать. Там, кстати, при открытии страницы, начинает идти таймер справу вверху.
Ребята, я реально не заметила, как пролетело время, и когда мне удалось эту задачку решить, у меня было такое чувство восторга и красоты от процесса и итога, что мне дико захотелось этим поделиться.
В общем, делюсь с вами. Для тех, кто хочет позалипать и вообще такое любит, вот ссылка:
https://app.crackingthecryptic.com/sudoku/j3m76TrmfD
ВАЖНО.
Кроме правил классического судоку в этом есть 2 дополнительных:
1. Цифры в пределах пунктирной линии не могут повторяться.
2. Цифры, стоящие от цифры N слева, справа, сверху или снизу не могут быть N+1 или N-1.
В примере ниже - в красных клетках вокруг цифры 2 не могут находиться цифры 1 и 3.
PS. Имеет смысл выложить решение через сутки? Или спойлер не нужен?
И еще, если кто еще что-то подобное знает - кидайте ссылки.
Позалипать: генератор конечных фракталов + дневник разработчика
Да простят меня математики за неточность определений.
Всем доброго времени суток.
Любителям позалипать на геометрические штуковины посвящается. У не любителей, надеюсь, также зашевелятся эстетические чувства. :)
Здесь небольшая демонстрация моего проекта. Приложение корректно работает только с компьютеров.
Другие проекты: https://stepanzh.github.io/
А так начинался этот...
Дайте знать, если нужен пост про разработку этого приложения.
Спасибо за внимание!
Крутые зацикленные GIF от Shonk, часть 2
Математик из Колорадо (США) создает эти прекрасные гифки при помощи силы науки.
Источник: http://shonkwiler.org
Первая часть: http://pikabu.ru/story/porazitelnyie_zatsiklennyie_gif_ot_ma...
Делаем залипалочку на FPC + Lazarus.
Хей. А давайте ка я вам напишу залипалочку, и расскажу по шагам как это сделать.
Будем мы писать это дело в Lazarus IDE и собирать компилятором FreePascal. На всякий случай, качается эта штука тут: http://www.lazarus-ide.org/index.php?page=downloads , но я рассчитываю на то, что вы уже знакомы хотя бы отдаленно с Delphi.
Поэтому ниже - только код залипалочки по шагам. Итак, для начала создаем пустой проект, и в обработку OnPaint пишем такой код:
Пока мы закрасили форму черным, и наша задача писать в b такие значения, чтобы вышла залипалочка. Все, конец.
Да не, шучу. Итак сделаем сначала шахматную доску 100*100 ячеек. Пишем:
На выходе шахматная доска:
Пока ничего примечательного. Что ж, давайте погоним волну по одному из ребер.
Для этого нам надо просто "двигать" координату перед передачей в делитель (j div 100) mod 2
Ну и поскольку это волна - то будем само собой двигать по синусу:
y := j;
y := y + 20*sin(i*0.1);
Но пока что волна статична, а мы собирались гнать её. Для этого нам нужно делать анимацию. Бросаем на форму таймер, ставим ему минимальный интервал, и на таймере просто зовем Invalidate;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Invalidate;
end;
Возвращаемся в OnPaint. Теперь нам тут нужно время. И желательно нормализованное (это такое, которое изменяется от 0 до 1 за N миллисекунд). Пусть интервал будет 2000 миллисекунд (это 2 секунды)
t := GetTickCount64;
tn := (t mod 2000) / 2000;
но это еще не все, дело в том, что это время имеет рывок, и оно будет резко скакать с 0 до 1. А нам нужно время, которое плавно перетекает из нуля в единицу и так же плавно обратно. Поэтому делаем "мякгое" время:
tnsoft := abs(tn - 0.5) * 2;
тут сначала мы смещаем tn, и он становится от -0.5 до 0.5. Далее с помощью abs мы замыкаем его. Теперь интервал будет плавно менятся 0.5 -> 0.0 -> 0.5. Ну и множим на 2, чтобы интервал стал 1.0 -> 0.0 -> 1.0
Теперь, когда мы имеем "плавное" время, можем поправить нашу функцию, сдвигающую y координату:
y := y + (tnsoft-0.5)*20*sin(i*0.1);
Да да, мы просто умножили амплитуду на это наше значение, переведя его в диапазон [-0.5;0.5)
Так, амплитуда меняется. Теперь давайте ка эти волны двинем вправо. Это легко, просто добавим сдвиг фаз от времени под синус (для идеальной зацикленности в gif-ках пришлось помножить на пи):
y := y + (tnsoft-0.5)*20*sin((i-t*0.1)*Pi*0.02);
Но пока еще недостаточно залипаловно. Давайте ка согнем горизонтальные волны типа как по параболе. Просто пишем:
y := y*i/200; перед тем как отправить в нашу функцию с синусом (еще я чуть увеличил амплитуду на синусе до 30)
Ну вот. На первый раз хватит. Вот такими простенькими манипуляциями простенькая залипалочка готова.
Полный говнокод юнита с формой: https://paste.ee/p/Gbq2y
Специально для Пикабу, сугубо от нефиг делать. Спасибо за внимание.








