По моему скромному мнению, стандартный текст скучен. Поэтому я предлагаю новый стандарт письма, ходячие слова!
Ходячие слова
Ходячие слова - это слова, которые будут отвечать определенным персонажам. Для этой задачи триггерные символы взяты [u, d, r, l]
из up down right left
.
Всякий раз, когда вы сталкиваетесь с таким символом при печати текста, вы будете перемещать направление текста.
Например, текст abcdef
приведет к:
abcd
e
f
правила
- И прописные,
UDRL
и строчные буквыudrl
должны менять направление, но регистр должен быть сохранен в выходных данных. - Ввод будет содержать только печатные символы
(0-9, A-Z, a-z, !@#%^&*() etc...)
, без перевода строки! - Всякий раз, когда текст сталкивается, он перезаписывает старый символ в этой позиции
- Вывод должен быть представлен пользователю в любом модном вопросе, но это должен быть один вывод (без массива строк)
- Трейлинг и ведущие новые строки разрешены
- Трейлинг разрешены
- Применяются стандартные лазейки
Контрольные примеры
empty input => empty output or a newline
u =>
u
abc =>
abc
abcd =>
abcd
abcde =>
abcd
e
abcdde =>
abcd
d
e
codegolf and programming puzzles =>
cod
e
g
o
dna fl sel
z
p z
rogramming pu
ABCDELFUGHI =>
I
AHCD
G E
UFL
It is in my humble opinion that standard text is boring. Therefore I propose a new writing standard, walking words! =>
dnats taht noinipo el
a b
rd m
It is in my hu
t
e
x
t
i
s
b
o
ring. Therefore I propose a new writing stand
a
rd
,
w
a
rdw gnikl
s
!
Это код-гольф , выигрывает самый короткий код в байтах!
code-golf
grid
printable-ascii
Bassdrop Cumberwubwubwub
источник
источник
golf
выглядеть вывод слова сам по себе?gfl
Ответы:
Древесный уголь ,
29272019 байтовПопробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Зацикливайте вводимые символы.
Если текущая буква является направлением ...
затем обновите текущее направление ходьбы.
Выведите символ в текущем направлении ходьбы, по умолчанию вправо, если направление еще не было задано.
источник
⌕
должен был быть№
. Прости за это.Дьялог АПЛ , 63 байта
s@(n+11 9∘○¨+\0j1*⊃¨,⍨\(8∘≠⍴¨⊢)0,'rdluRDLU'⍳¯1↓s)⍴∘'',⍨2×n←≢s←⍞
использует
⎕IO←0
и функции от v16 (@
)n←≢s←⍞
необработанный вводs
и его длинаn
⍴∘'',⍨2×n
создать 2n на 2n матрицу пространствs@(...)
дополнить матрицу символамиs
по указанным (парам) индексамкак рассчитываются индексы:
¯1↓s
бросить последний символs
'rdluRDLU'⍳'
закодировать'r'
как 0,'d'
как 1 и т. д .; другие символы как 80,
добавить 0(8∘≠⍴¨⊢)
превратить каждые 8 в пустой список, все остальные в список из 1 элемента,⍨\
накопительная конкатенация с перестановкой (abcd
->a ba cba dcba
)⊃¨
сначала от каждого0j1*
мнимая постоянная я к власти+\
кумулятивные суммы11 9∘○¨
реальная и мнимая часть от каждого; получить координаты в диапазоне-n
...n
n+
центрировать их на большой матрицеисточник
Pyth,
6865 байтТестирование
При этом используется словарь, индексированный парой координат, который обновляется при чтении ввода, а затем печатается в конце. Это также использует тонну умных уловок игры в гольф.
Вот как я это написал, используя
-m
флаг интерпретатора для удаления пробелов и комментариев перед запуском:источник
C #,
525474 байтаРедактировать: 51 байт благодаря @steenbergh
Это не красиво, но это работает ...
Golfed:
Ungolfed:
Объяснение:
Использует двумерный массив и
d
значение для увеличения позиции массива в направлении коррекции, где значения d:Тест:
источник
d=0;
, замените этот оператор на оператор во второмcase 0:
операторе переключателя и сделайте то же самое, что и в других случаях, и вам может не понадобиться второй переключатель. И, наконец, удалите этот операторa[y,x]=s[i]
и напишите его сверху первого выключателя.a[y,x]=s[i]
перед первым переключением?switch(s[i].toLowerCase())
(или что такое c # эквивалент ...), а затем удалить все прописные буквы. Следует сохранить несколько байтов.ToUpper()
потому что этоchar
неstring
. Выбор либоs[i].ToString().ToUpper()
илиchar.ToUpper(s[i])
- я думаю, чтоchar
один немного короче. Приветствия :)JavaScript (ES6), 218
220 232Редактировать Я использовал
u
иt
для отслеживания верхней и левой позиции, но я понял, чтоt
это вообще не нужноМеньше гольфа
Тест
источник
05AB1E ,
27 26 25 2322 байтаСохранено 3 байта благодаря Грими
Попробуйте онлайн!
объяснение
источник
Javascript, 4̶6̶6̶,
455433 байтаИзменения: 11 байтов сохранено, благодаря пользователю 1000000000 10 или около того сохранено, благодаря пользователю 2428118 Также удалены некоторые ненужные точки с запятой.
Я уверен, что это может быть дальше, но я не мог справиться с этим. Я все еще новичок, поэтому любой совет очень ценится :)
Ungolfed:
}
Я более или менее принял подход:
источник
['r','u','l','d']
на"ruld"
z=
в начале вашей программыa.split``
.Python 3,
314309290268 байтЯ попытался запустить свою программу в качестве входных данных для моей программы с некоторыми интересными результатами. Ха, попробуй это интерпретировать, Питон!
Бритые 5 байтов - комплименты Джеку Бейтсу.
23 байта унесено Кундором
Примечание: я думаю, что были некоторые ошибки измерения с моими байтами из-за использования разных редакторов. Тем не менее, я уверен, что последний из них правильный.
источник
'r':(1,0)
на'r':d
и удалив пробел вw[a] for
. И это безумие !!! Сколько времени это заняло у тебя?X,Y=map(...)
строку наX,Y=zip(*m)
. Работает здесь (*m
распаковывает его в список ключей и упаковывает их в два кортежа.)PHP,
238 223 205204 байта12 байтов, сэкономленных Йоргом (
stripos
вместоpreg_match
), 1 байт + фигурные скобки с лидирующими символами вместо новой строки, 16 + фигурные скобки с изменением направления, еще 1 с троичным вместоif
.Запустите как трубу с
php -nR '<code>'
или попробуйте онлайн .сломать
источник
strspn($r[$y+=$e][$x+=$d]=$c,udlruDLR)
должно сохранить несколько байтов вместо использования регулярного выражения, то 'stripos (_ulrd, $ r [$ y + = $ e] [$ x + = $ d] = $ c) `должно быть лучше, так как strspn$argn
сохраняет 3 байтаJava 10,
288286280263 байта-17 байт благодаря @Grimy .
Объяснение:
Попробуй это здесь. (Примечание: я удалить все завершающие пробелы / переводы строк , чтобы сделать вывод немного более компактен Вы можете удалить.
.replaceAll("(m?)\\s+$","")
Вtest
-метода увидеть фактический результат.)источник
d<69?1:d>84?-1:0
может быть5-d/14
d==82?1:d==76?-1:0
может быть3-(d^16)/23
Perl, 204 + 3 = 207 байт
+3 за
-F
Пробелы не являются частью кода и предоставляются для удобочитаемости.
Как и в моем решении задачи Fizz Buzz, я создаю хэш с координатами x, y для каждого шага на пути, сохраняя максимумы и минимумы x- и y-координат, сохраняя их, затем перебираю и распечатываю все.
Если я в отчаянии, я могу превратить последние три строки первого
for
цикла в одно отвратительное утверждение, которое может сохранить один или два байта, но я не ожидаю совершенно нечитаемого результата.источник
Excel VBA, 205 байт
Я немного удивлен способностью Excel конкурировать с существующими ответами. Это работает, потому что
w
иz
отслеживать направление.источник
SmileBASIC,
148146 байтВызовите функцию с
W "text",vx,vy
, где vx и vy - направление в начале (по умолчанию 1,0)источник
Swift 3, 283 байта
Ungolfed
Предупреждение
Более длинный ввод требует большего экрана. Выходные данные не обрабатываются для «пустой» строки / столбцов, как я понял, что является приемлемым по правилам теста.
декламация
print
suxисточник