У моих родителей в саду есть пруд для разведения рыбы, наполненный кои. Это действительно не приходило мне в голову, пока я не заметил следующую выдержку из своего кода.
',') & '_'
... У меня были рыбьи лица, смотрящие на меня с моего экрана ...
Что дало мне отличную идею ...
Мои дорогие игроки в гольф, я хочу создать аквариум с одной линией ASCII по следующим правилам:
- Размер аквариума от одной стороны резервуара до другой стороны резервуара должен быть не менее 60 символов и не более 80 символов. Стороны резервуара должны быть обозначены с помощью
|
символа трубы / бара ( ). - Рыба должна уметь «плавать» слева направо между стенками аквариума. Поскольку они будут поворачиваться, вид спереди необходим для перехода из одного направления в другое.
Рыба должна выглядеть следующим образом:
}}< }} ',')
Рыба плавает прямо(',' {{ >{{
Рыба плавающая слева}}('_'){{
Рыба лицом вперед
Когда рыба поворачивается, чтобы изменить направление (вероятность 30%), она должна начинаться с одного направления, лицом вперед, а затем в другом направлении ... Убедитесь, что у рыбы достаточно места для поворота, т.е. требуется шесть пробелов до край танка минимум ...
- Если рыба не пускает пузырь или не меняет направление, она будет продолжать двигаться в том направлении, в котором она стоит, если она попадет в шесть пространств от стороны резервуара, она изменит направление.
- Рыба (обращенная влево или вправо) может в некоторых случаях (с вероятностью 10%) прекратить пускать мыльные пузыри подряд (
.oO*
), поэтому рыбе необходимо иметь свободное пространство рядом с ними, чтобы пузырь мог существовать, чтобы рыба могла только плавать как можно ближе к сторонам, за исключением одного места. Пузырь должен исчезнуть, прежде чем рыба сможет двигаться дальше ...
Ряд примеров строк поведения рыбы, с -
символами, обозначающими пробелы, поскольку функция отображения кода здесь немного строга ... Я буду ожидать, что эти штрихи будут заменены пробелами, когда вы кодируете это ...
Каждую строку здесь можно считать кадром в промежутке времени.
|-}}< }} ',')----------|
|--}}< }} ',')---------|
|---}}< }} ',')--------|
|----}}< }} ',')-------|
|-----}}< }} ',')------|
|-----}}< }} ',').-----|
|-----}}< }} ',')o-----|
|-----}}< }} ',')O-----|
|-----}}< }} ',')*-----|
|---------}}('_'){{----|
|-----------(',' {{ >{{|
|----------(',' {{ >{{-|
|---------(',' {{ >{{--|
|--------.(',' {{ >{{--|
|--------o(',' {{ >{{--|
|--------O(',' {{ >{{--|
|--------*(',' {{ >{{--|
|--------(',' {{ >{{---|
|-------(',' {{ >{{----|
|------(',' {{ >{{-----|
и т.д. Приведенный выше пример, как я уже сказал, небольшой, но вы получите общее представление ...
Самый короткий код выигрывает ...
Я ожидаю вывод на одной и той же строке (если это возможно), если нет, отображение кадра за кадром подряд - это нормально ... Независимо от того, идете ли вы на одну строку или несколько строк, решать вам. Если вы делаете несколько строк, они должны быть разделены новой строкой.
Также между кадрами установлен таймер, 2000 мс. Это обязательно .
Давайте посмотрим, что у вас есть!
источник
Ответы:
Питон 3 (278)
Ранее: 334, 332, 325, 302, 300, 299, 291, 286, 284, 281
Гольф в Python всегда сложен из-за требований абзаца отступов, но, несмотря на это, все прошло очень хорошо!
Большое спасибо Volatility и DSM за то, что они помогли мне в этом.
Чистая версия
источник
Рубин,
291289Длина рыбы составляет одиннадцать символов, что делает аквариум шириной 6 * 9 + 11 + 2 = 67 символов, что точно соответствует требуемому допуску.
f
Лямбда - функция делает всю тяжелую работу: он принимает замену в виде пары аргументов, то попытки применить замену на аквариум. Если это удается, он рисует один кадр анимации. Затем он сообщает значение успеха как2
(принятая задержка) илиnil
(задержка не выполнена).Рыба не будет пускать мыльные пузыри дважды. (Исправлено:
...while rand>0.1
- 4 персонажа)Рыба может пускать мыльные пузыри еще до принудительного поворота. (Исправлено: изменить структуру ветвления)
Есть рамка, где пузырь полностью исчез (включая
*
), но рыба не переместилась в образовавшуюся пустоту. Это следует за буквой, но не примером. (Исправить: заменитьf[?*,w]
наq[?*]=w
- бесплатно)Не очищает консоль. Исправление: добавьте
`clear`
(Unix) илиsystem 'cls'
(консоль Windows), прежде чемputs q
исправлять ( Ref. ), Или используйтеprint
вместоputs
и добавьте\r
аквариум ( предложено @manatwork ).Читаемая версия:
источник
\r
к началу д:q="\r|#{r+s*9}|"
. Тогда используйте$><<q
вместоputs q
. На 1 символ длиннее, но выглядит лучше без использования внешних команд.\r
очищает экран? Это не в моем случае. Или почему тебе не нравитсяputs
?\r
это возврат каретки. При использовании$><<q
для вывода курсор останется в той же строке (puts
форсирует a\n
после вывода), поэтому запуск следующего вывода с помощью\r
переключится обратно в начало текущей строки и начнет выводить оттуда. Таким образом перезаписывает предыдущее «изображение» аквариумной линии.\r
.R, 451 символов
Первая попытка:
Отступ:
Он печатает аквариум как stdout на одной строке (затем 2s break и возврат каретки до того, как будет напечатан аквариум в t + 1).
источник
Perl, 281
или более четко
Рыба крутится правильно. Дует пузыри
285 - если вам нравится настоящее ощущение аквариума, а не прокрутка:
источник
$d=0
в «повороте».sleep2
(без места) не работает для меня; также, когда вы поворачиваетесь, вы не держите рыбу лицом. И пузыри, кажется, никогда не появляются.C
400394373 символовС пробелами:
источник
i==l?(c=r):(c=l)
сократить доc=i==l?r:l
?#define p printf(