Вступление
Вы играете в игру на совпадение, в которой монеты вставляются сверху и падают вниз (на верхнюю монету) под действием силы тяжести.
Так это
O <- inserting this coin
OO O
OOOOO
станет этим
O
OO O
OOOOO
Теперь представьте, что кто-то вращает доску по часовой стрелке. Произойдет следующее:
1. Доска вращается
OOO
OO
O
OO
O
2. Монеты падают под действием силы тяжести
O
O
OO
OO
OOO
Твое задание
Ваша задача - смоделировать вращение доски, написав программу или функцию. Для простоты мы имеем дело только с одним видом монет (это не слишком захватывающая игра на совпадение, правда ...). Вы можете предположить, что гравитация применяется только после завершения вращения. Доска вращается по часовой стрелке.
вход
На входе будет строка, которая содержит 3 типа символов:
- O (заглавная o) ИЛИ 0 (ноль) - монета (вы сами решаете, какую из них поддерживает ваше решение)
- (пробел) - пустое поле
- \ n (новая строка) - конец строки
Вход представляет состояние платы. Можно предположить, что вход правильно сформирован и содержит действительное состояние доски (монеты не плавают). Ввод может быть параметром функции или может быть прочитан из стандартного ввода или из файла.
Выход
На выходе появляется новое состояние платы после вращения. Вывод содержит те же 3 типа символов, что и ввод. Вывод может быть возвращен из вашей функции или может быть записан в стандартный вывод или в файл.
Образец
Input1:
O
OO O
OOOOO
Output1:
O
O
OO
OO
OOO
Input2:
O O
O O
Выход2:
OO
OO
Вы можете использовать любой язык и стандартную библиотеку выбранного языка. Самая короткая программа в байтах побеждает.
источник
Ответы:
GolfScript,
1412 символовВвод необходимо указать в STDIN, символ для монет может быть любым непробельным символом. Попробуй здесь . Спасибо Питеру за указание на сокращение двух символов.
источник
transpose
в Ruby, который может обрабатывать массивы различной длины ...([nil]*a.map(&:size).max).zip(*a)
. Не хорошо для игры в гольф, хотя.-1%
на$
." "
.Javascript (E6) 103
Сначала попробуйте просто матричные операции. Каждая строка во входной строке должна быть дополнена.
Довольно многословно.
Псевдокод
источник
[...x]
раньше. Как это называется?spread
[ developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Ruby 2.0, 59 символов
Ввод через стандартный ввод предполагает, что все строки имеют одинаковую длину. Это, вероятно, намного дольше, чем необходимо. Но, по крайней мере, это читабельно ...
источник
$<.map
вместо этого.1..-1
), я просто выбираю 50 строк, начиная со второй (1,50
).J -
493124 байтаЯ думаю, что там могут быть ненужные повороты, но в противном случае он работает нормально. Это функция, которая принимает входные данные, как указано, монеты
O
. Конечный пробел не требуется при вводе.Новая версия, вдохновленная Javascript-ответом edc65 :
Объяснение:
Старая версия:
Объяснение:
Примеры (обратите внимание, что многострочные строки начинаются
0 : 0
и заканчиваются скобкой):источник
Хаскель - 86
Просто учусь, поэтому я уверен, что это можно улучшить.
Пример ввода:
Пример вывода:
источник
Питон 2 (69)
(79)Принимает ввод, дополненный пробелами, поэтому все строки имеют одинаковую длину.
split
Создает arrat каждой строки.zip
Эффективно переставляет массив. Затемsorted
сортирует кортежи в лексикографическом порядке, в результате чего все монеты падают на дно. Наконец, мы печатаем каждую строку, превращая ее обратно в строку, хотя сначала мы должны обратить ее. Выполнениеprint'O'*c.count('O')
эквивалентно и использует одинаковое количество символов.Пример выполнения:
источник
C
167119 байтЭта более короткая версия (к сожалению?) Намного яснее, чем оригинал.
источник
Ракетка: 130
Это требует, чтобы вы дополняли пробелами, чтобы линии были равны по длине.
источник
C # -
209174 байтаПравильно, я должен попробовать этот Кодекс гольф в какой-то момент, который я считаю. Создана функция (r), которая вращает доску и печатает ее. Я предполагаю, что немного обманываю, когда печатаю свой массив символов, но если вы не можете понять, почему вы не должны злиться :)
Спасибо ProgramFOX за советы :)
Чит
источник
char[]
иy
уменьшит количество ваших персонажей до 192 символов. Кроме того, нет необходимости указывать ключевое словоstatic
при размещении ответа здесь. Удаление его уменьшит количество ваших персонажей до 185 символов.