Boroda aka Hamster (fantaseour) wrote,
Boroda aka Hamster
fantaseour

Эту историю многие наверное читали

Participating in ICFPC-2006 for fun and profit :)

Те, кто не читал, но кому может быть интересна программерская олимпиада обязательно прочтите.

Первый раз я эту историю прочитал наискосок некоторое время назад. Сейчас почитал повнимательнее.
Ну понятное дело -- обалдел от крутости участников. Однако рука потянулась к шашечкам....


svn export http://www.freaks-unidos.net/svn/icfp/src/um-32/

UPDATE вот эта машина значительно быстрее

Запускаем Cygwin.

hamster@hmsboroda ~/contest
$ wget http://icfpcontest.org/codex.umz

hamster@hmsboroda ~/contest
$ make all
gcc -Wall um-32.c -o um-32 -g -O2
gcc -Wall dasm.c -o dasm -g

hamster@hmsboroda ~/contest
$ ls
Makefile  codex.umz  dasm.c  dasm.exe  um-32.c  um-32.exe

hamster@hmsboroda ~/contest
$ ./um-32 codex.umz
File size is 2357032
Ok. We read the program
self-check succeeded!
enter decryption key:
(\b.bb)(\v.vv)06AAbsqu51UUMkQBGh
decrypting...
ok
LOADING: 9876543210

 == CBV ARCHIVE ==
    VOLUME ID 8

 Choose a command:

 p) dump UM data
 x) exit

?
?


ЗАПУСТИЛОСЬ!
Я тоже чуть-чуть прикоснулся :) Эх жаль нету времени самому написать интерпретатор не такой уж он сложный....

Update А вот и не такой уж простой! Узкое место организация хеша. В той машине, которая быстрее автор это место отловил профайлером и оптимизировал -- тут надо знать алгоритмы, при том что в Кнуте, как говорят, не самый лучший алгоритм организации хэш-таблиц.

Choosing a good hash function is tricky. The literature is replete with poor choices, at least when measured by modern standards. For example, the very popular multiplicative hash advocated by Donald Knuth in The Art of Computer Programming (see reference below) has particularly poor clustering behavior. However, since poor hashing merely degrades hash table performance for particular input key distributions, such problems commonly go undetected.

Ладно, дальше, дальше... теперь этот дамп перенаправить в файл.
./um-32 codex.umz > step2.um

вслепую вводим код, жмем "p", получаем файл. Теперь из него надо убрать лишние строчки вначале -- ультраедит успешно это делает

./um-32 step2.um

12:00:00 1/1/19100
Welcome to Universal Machine IX (UMIX).

This machine is a shared resource. Please do not log
in to multiple simultaneous UMIX servers. No game playing
is allowed.

Please log in (use 'guest' for visitor access).
;login:


1/1/19100 аааа -- это ошибка двухтысячного года -- так трактовалось 1 января 2000 года старыми библиотеками C

логинимся гостем, смотрим папки...


Беда. Сейчас 3:00, завтра, то есть сегодня рабочий день. Я спать буду или как?

PS Не такой уж ты и страшный, Бэтман :)
Tags: development, fun, internet, personal, tech, virtualization
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 13 comments