nsg21: (Default)
Я ещё один свой долгострой победил. Давным давно, в начале 2000х я наткнулся в интернетах на шестиугольную вариацию сокобана (который мне страшно нравится в оригинальной озвучке тоже) и захотел в них поиграть. Времена были уже просветлённые и имелось в наличии даже несколько игралок шестиугольных конфигураций на javascript. Мои личные трудности с ними были в том что мыши они не понимали, а с клавиатуры выбирать одно из шести направлений оказалось неожиданно трудно и я решил написать свой собственный -- чтобы мышью управлялся. В общем, пацан сказал, пацан сделал -- зацените гнома: http://nsg.upor.net/game/s/soko-hex.htm

Что характерно, тех игралок что были раньше уже нет. Есть какая-то .exe для Windows (судя по скриншотам, 95 или в лучшем случае мелениум), но нифига я не буду себе ставить какой-то левый ехешник.

Тоже, кстати, тенденция в копилку упавших нравов. Куча полезных сайтиков со скриптиками или протухли от старости, или вообще исчезли а новых на замену не выросло. Был прикольный сайт который умел решать уравнения второй степени (сводя их к уравнению Пелля и всё расписывая при этом), так всё. Сайт есть, но то ли java ему не та, то ли flash недостаточно заапгрейдженый. А хвалёный вольфрам этого не делает, или я не знаю как его уговорить, что эквивалентно.
nsg21: (Default)
Ещё программку написал на MSX Basic.


Головоломка называется Color Path. Надо дойти до цели проходя сначала по красной дорожке, потом по жёлтой, потом по зелёной, потом снова по красной и так далее. Всего внутри 12 лабиринтов, все из книжки.

Написал потому что пальцем по картинке водить всё время сбивался, да ещё и текущий цвет в голове помнить. А на MSX Basic потому что аппетит приходит во время еды. Сначала думал на javascript, но потом решил что будет проще на MSX. Проще было врядли, но интересней точно. SCREEN1, цвета по ходу меняются, знакогенератор перепрограммируется чтобы штрих-квадратики сделать.

Ну и чтобы два раза не вставать, ещё одна головоломка 123MAZE.BAS
nsg21: (Default)
Вдогонку к посту про псевдографический рекурсивный лабиринт.

Я таки вписал это в три строчки, хотя и с оговорками (конец игры нужно определять органолептически, слетает с ошибкой если не ту кнопку нажать, ну и по мелочам).


Началось переписывание с того что я нашёл другой лабиринт этого же типа, но поменьше (http://skepticsplay.blogspot.com/2010/10/fractal-maze.html
). После нескольких итераций я ужал его до 9x14 знакомест, а это уже такой размерчик что можно попытаться уместить в строку. Плюс строка на логику, строка на инициализацию, как раз могло и получиться. Так и вышло.

Вот он, кстати, красавец:

Цифры внизу -- это отображается стек погружения. Две подкомнаты, 7 входов в каждой. Я без бумажки даже с программкой-плеером не решил. (Правда с бумажкой решил, так что ответ точно есть)

Неожиданно для меня в 4 строки вписалось довольно легко, но дальше процесс застрял. Все грязные трюки какие мог, я применил, но ни в какую.

Писал я его сидя на трибунах на турнире по FIRST Robotics (это очень неудобно, очень шумно и в моём случае ещё и довольно жарко), поэтому как именно оно ужалось я упустил, но это было не красиво и не легко. Вот, например, последний оператор первой строки V=VPEEK(U)-9. Девятка вычитается чтобы можно было в следующей строке при сравнении V с границами можно было использовать меньшие числа. Мне бы было гораздо удобнее (и сэкономилось бы больше места в следущей строке) если бы я мог вычесть 17, но нет: 17 это два знака, а место есть только для одного. А в следующей строчке мне место тоже не просто так понадобилось. Последнее слово там NEXT, не хватало трёх символов, помещалось только N, что не может служить полноценной заменой NEXT. И это уже финальные штрихи, до этого ещё дойти как-то надо было.

В принципе ещё есть резерв: можно перевернуть лабиринт вверх ногами, тогда начальная позиция будет ближе к началу экрана и инициализация "X=284" превратится в "X=45", но я рад что до этого не дошло: при этом лабиринт бы поменялся и большое количество числовых параметров, которые в коде просто в явном виде, пришлось бы пересчитывать.
nsg21: (Default)

http://i.imgur.com/6huvRS2.gifv

На видео (ускоренном в несколько раз) биоморфы Пиковера вступают во взаимодействие друг с другом в результате чего они обмениваюся внутриклеточными симбионтами. Вначале жгутики мембраны находят соседнюю клетку, после чего после нескольких пробных попыток запускается процесс слияния мембран и образования общего объёма. В этой фазе пара симбионтов меняет хозяев, в то время как нуклеоморфные образования находят и кратковременно соединяют щупальца. Возможно, эти два процесса связаны между собой. Может даже можно это объяснить с эволюционных позиций -- типа генетическим материалом обмениваюся, или ещё чего.

На самом деле, конечно же нет никаких организмов, только семейство множетсв "модифицированой стабильности" отображения z^6+2z+c где параметр c описыват фигуру Лиссажу внутри маленького прямоугольничка.

Когда-то давно я уже писал такую программу. Как сейчас помню, картинка рисовалась точка за точкой, на кадр уходило минут пять. На MSX BASIC. Подкручивать параметры тоже было неудобно, поэтому полноценного исследования не получилось. Вспомнил и подумал, а не сделать ли такое же, только на javascript? Сделал и содрогнулся. Даже на моём не очень новом лаптопе картинка 256x256 отрисовывается практически в реальном времени, только успевай мышкой параметр c тягать.

Наверное не будет преувеличением сказать что любой человек имеющий доступ к компьютеру оборудованному хромом и кнопкой f12 имеет в своём распоряжении большую вычислительную мощность, чем всё человечество времён полётов на Луну.
nsg21: (Default)
С удивлением обнаружил, что если в виндоус эксплорере выделить несколько файлов (с разными расширениями), нажать F2 и ввести имя не трогая расширения, то переименуются все выделенные файлы.
nsg21: (Default)
Сделал эмулятор логарифмической линейки с очень длнинной шкалой закрученной в спираль. Типичный представитель этого типа линеек -- Gilson Atlas.
http://nsg.upor.net/slide/cratlas.htm
nsg21: (Default)
Похоже, после летнего перерыва projecteuler опять работает. По этому поводу решил несколько старых задач оттуда. Понравилась задача 395 про фрактал-брокколи из пифагорового треугольника.
Итого решено 187 задач, как раз посередине между 175 и 200 (7 и 8 уровень).

Кстати, интерсно что администрация, находит всё новые и новые способы сделать "рейтинг" как можно более труднодоступным. Раньше рейтинг писался на каждой странице рядом с именем, теперь его надо специально искать. Также исчез рейтинг из форумных постов, теперь видна только страна и язык постера. Я понимаю что они это делают чтобы избежать рейтингочитерства, но с другой стороны не понимаю, им что, жалко, что-ли? Пусть себе читят.
nsg21: (Default)
Представим себе абстрактного продвинутого пользователя. Есть у него каталог развесистой структуры, в нём лежат файлы. Хочет этот пользователь получить список этих файлов одним куском. Да нет проблем, на то он и продвинутый. Открывает чёрное окошко, пишет "dir /b /s >z" и готово.
Это в случае, если русских букв в именах файлов нету. А если есть, то они будут заменены знаком вопросика, для вашего же удобства. Что делать в этом случае продвинутому?

Я знаю что я сделал бы в таком случае. Написал бы что-то вроде этого:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folder = fso.GetFolder(".");
//var subFlds = new Enumerator(folder.SubFolders);
var files = new Enumerator(folder.Files);
var out=fso.CreateTextFile("z",true,true);
for (; !files.atEnd(); files.moveNext()) {
    out.WriteLine(files.item());
}

Но нормальные-то люди как обходятся? Или я не знаю какой-то секретной кнопки?
А то как-то слишком много писанины для такой тривиальной операции.

Update:
1) вспомнил что бывает Powershell, который умеет много гитик, в том числе не портить юникод в именах файлов
2) cmd.exe /U /c dir /b /s >z файл при этом будет ucs-2le, а не utf8

javascript

Jul. 25th, 2012 10:13 pm
nsg21: (Default)
Любите ли вы javascript как люблю его я?

По работе я не писал на javascriptе с 1999-го года, но по развлечению не
переставал писать никогда. Многие ругают javascript, говорят, это, мол кривая
недоделанная java, или ещё какие глупости. Ничего подобного, java -- это кривая
недоделанная java, javascript крив и недоделан по своему, самобытно.

Привлекателен javascript тем что выполняется на компьютерах с веб браузерами,
что по нынешним временам включает в себя телефоны, а в будущем, возможно, будет
включать зубные щётки.

Отвратителен тем, что выполняется в веб браузерах, а они все каждый имеет
своё представление о том, как.

Когда я с этим разбирался в конце 90-х, шла "браузерная война", поддерживаемые
фичи менялись каждый месяц, отсутствовали внятные книжки, приличных библиотек
тоже не было. Отладка заключалась в том что при ошибке, в лучшем случае, в
левом нижнем углу браузера появлялся жёлтый треугольничек, в худшем браузер
слетал с катушек вообще. Если программа делала одну из этих двух вещей, значит
где-то ошибка и хорошо бы какие-нибудь ascii символы заменить на другие чтобы
этот эффект не наблюдался. Какие именно символы менять оставлялось в качестве
упражнения для читателя, вот такая отладка. В общем было трудно, и я писал на
javascript гораздо меньше чем он того заслуживает.

С тех пор много поменялось. Стандарты стабилизировались, браузеры
конвергировали, средства отладки улучшились, очень умные и решительные люди
написали простые и удобные библиотеки, а самое главное -- книжки и статьи.

Я к чему это всё? Просто вот, книжку нашёл http://eloquentjavascript.net/ и
делюсь нечаянной радостью. Ах, почему мне эта книжка не попалась 10 лет назад?
Неважно что написана пять лет назад, тогда почему не пять?
nsg21: (Default)
На projecteuler произошёл очередной редезайн сайта. "Существенное" изменение -- каждый уровень теперь не через 50 задач (как было раньше), а через 25. Таким образом, мои 174 превратились из "26 до следующего уровня", (что равносильно бесконечности), в "1 до следующего уровня", что уже обозримо. Поменялись также иконки уровней -- из геометрических фигур стали абстракными узорами.


Ещё вернули возможность смотреть какие задачи решил другой участник. Но делать это можно не для всех участников, а только для френдов. Как работает непонятно. Надо ввести какой-то код, тогда, надо полагать, будет видно. Мой код под катом, если кому интересно.

Ещё есть "специальные призы" -- в основном за решения нескольких задач с номерами из характерного множества (типа квадратов). Но есть и более осмысленные -- например, за решение задачи в числе первой сотни. В общем, посмотрим во что это у них выльется в итоге.

Read more... )

level up

Mar. 26th, 2010 09:09 pm
nsg21: (Default)
Решил 150-ю задачу на Project Euler что перевело меня в следующий уровень. Так что я теперь не просто так, а intermediate, он же додекаэдр.
Да, и 150-ю не в смысле "номер 150", а в смысле "150 из 284-х". Трудно, блин.
nsg21: (Default)
Давно собираюсь сделать дралоскоп из поломанного сканера, да всё никак не соберусь.
Пока собираюсь, решил потренироваться и написал маленькую, но, несомненно, полезную программу под одноимённым названием "Дралоскоп".
Программа берёт картинку из файла или клипборда, делает её полупрозрачной и помещает её перед всеми остальными окнами.

Profile

nsg21: (Default)
nsg21

April 2024

S M T W T F S
 123456
7 8910111213
14151617181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 30th, 2025 09:41 pm
Powered by Dreamwidth Studios