LINUX.ORG.RU

Шахматы, или «Как правильно почесать руки»

 , ,


7

6

Как известно, мало не много, а иного много не бывает. Представляем вам самую сложную настольную игру умной части человечества — шахматы.

Шахматы написаны на чистом sed без использования расширений GNU. По текущему уровню реализованой логики игра ведётся по правилам XIV века. Отсутствуют рокировки и взятия на проходе, уход от шаха примитивный.

Как заявил автор, писал игру:

примерно две недели, правда с гигантскими перерывами), я пару раз порывался бросить это занятие.

Новость написана по итогам прочтениясовсем другого сайта.

>>> Узреть степень своего ничтожества

★★★

Проверено: Pinkbyte ()

Ребят, простите что обращаюсь не по теме (модераторы, просьба не удалять пост хотя-бы 1 день).

Вопрос любителям Humble Indie Bundle.

Дело в том, что обычно я не пропускаю ни одного HiB'а (за исключением самых плохих). Я был в отпуске, когда проходил HiB «1C», и пропустил серию игр King's Bounty, в которую всегда мечтал поиграть. Там она продавалась DRM-Free...

Может ли кто-то продать/подарить (временно поделиться) ключик, может у кого-то завалялся лишний? Или может подарить именно DRM-Free версии серии King's Bounty? Буду очень благодарен, обещаю никому ключ не передавать, и забуду его сразу после закачки King's Bounty...

Еще раз простите за оффтоп!

anonymous ()

Что только не придумают некоторые, лишь бы не юзать Perl.

annulen ★★★★★ ()
Ответ на: комментарий от nerdogeek

Лол. Так и представляю, как писалось. И почему такие перерывы.

anonymous ()

Чёрный король, уходя от шаха ладьёй, съел собственного ферзя. При этом остался под ударом ладьи.

question4 ★★★★★ ()
Ответ на: комментарий от leonidko

Не знаю, как perl, он вроде тоже сильно завязан на regexp, но, естественно, python, если не извращаться, будет значительно легче в чтении. Сравните, например,

echo "Python"|sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
и
print(''.join(reversed('Python')))
или
print('Python'[::-1])
Не говоря уже о том, что sed на больших объемах гораздо медленнее. Конечно, можно использовать tac и еще 100500 утилит... А что касается кроссплатформенности, мой скрипт сам определяет, на какой системе его запустили и делает отсюда соответствующие выводы.

denton ★★★★★ ()
Последнее исправление: denton (всего исправлений: 1)
Ответ на: комментарий от anonymous

А может ли он это прочитать через годик-другой?

зачем?

autonomous ★★★★ ()
Ответ на: комментарий от autonomous

Это совершенно неважно, как бы я сделал и смог ли сделать бы вообще. Сами по себе слова «псевдофигура, чтобы не было переполнения» указывают на явно искусственный и костыльный объект, который априори не должен существовать.

Впрочем ок, дам технический ответ. Для вычисления суммарной ценности фигур автор использует приём, при котором цепочка букв, обозначающих фигуры, переводится в цепочку десятичных символов (1 - сотни, H - тысячи и т.д.). Этот код весьма неочевиден (что такое переполнение 21900? Это переполнение 12900 - суммарной ценности фигур? Как псевдофигура с ним борется?), подвержен ошибкам, а ценности фигур прибиты гвоздями.

Я переписал бы функцию вычисления суммарной ценности фигур, чтобы она делала честное бинарное арифметическое суммирование.

Cheater ()
Ответ на: комментарий от Cheater

Я переписал бы функцию вычисления суммарной ценности фигур, чтобы она делала честное бинарное арифметическое суммирование.

Попробуй, перепиши и всем будет хорошо.

anc ★★★★★ ()
Ответ на: комментарий от Cheater

Я переписал бы функцию вычисления суммарной ценности фигур, чтобы она делала честное бинарное арифметическое суммирование.

и смог ли сделать бы вообще

а вот автор смог и за это получает заслуженные респекты. постановка задачи хакерская и занудствовать об очевидности кода тут нет смысла. sed это не язык програмирования, если бы я написал крестики-нолики на echo, ты бы тоже это обсуждал с умным видом? :)

autonomous ★★★★ ()
Ответ на: комментарий от autonomous

Эмм. Вообще-то ты же меня и спрашивал, какие есть аргументы насчёт плохого кода, а затем - как я бы написал эту функцию. Теперь оказывается, что я занудствую? Офигеть.

Cheater ()
Ответ на: комментарий от Cheater

Это был скорее риторический вопрос. А занудство это то, чем ты сейчас занимаешься :)

autonomous ★★★★ ()

ээ а почему короля можно съесть??

  a b c d e f g h
8 ♖ ♘ ♗         ♖ 
7         ♔       
6   ♙       ♝     
5 ♙ ♟   ♟       ♙ 
4 ♟   ♟       ♙ ♜ 
3     ♞           
2     ♟     ♟     
1 ♜     ♛ ♚ ♝ ♞   

Введите команду
f6 e7
        Мне шах и мат, я проиграл
Subcreator ()

Пацталом! Хочу тоже уметь так программировать! Как? Струпа Труселяуса в зубы? Кернигано да Ричи? http://lib.ru/CTOTOR/starterkit.txt

anonymous ()
Ответ на: комментарий от anonymous

Пацталом! Хочу тоже уметь так программировать! Как? Струпа Труселяуса в зубы? Кернигано да Ричи? http://lib.ru/CTOTOR/starterkit.txt

К теме этот ответ не имеет никакого отношения.

Но вот это http://lib.ru/CTOTOR/starterkit.txt доставило первой же строкой :)

anc ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.