Некоторые двумерные esolangs, такие как Forked , и некоторые не esolangs, такие как Python , иногда могут требовать пробелы перед строками кода. Это не очень гольф. Кроме того, я ленивый и пишу 2D язык, который требует много пробелов перед кодом. Ваша задача - написать инструмент, который сделает эти языки более привлекательными.
Конечно, это не будет идеально; его нельзя использовать, например, когда число является первым символом в строке источника. Однако в целом это будет полезно.
Вызов
Вы напишите программу или функцию, которая либо ...
- ... принимает один аргумент, имя файла или строку, или ...
- ... читает со стандартного ввода.
Ваша программа будет действовать как cat
, кроме:
- Если первый символ в любой строке является числом, ваш код будет печатать x пробелов, где x это число.
- В противном случае он будет просто напечатан.
- Как и любой другой символ на входе.
Контрольные примеры
Входные данные:
foo bar foo bar
1foo bar foo bar foo bar
2foo bar foo bar foo bar foo bar
Выход:
foo bar foo bar
foo bar foo bar foo bar
foo bar foo bar foo bar foo bar
Входные данные:
--------v
8|
8|
80
8,
7&
Выход:
--------v
|
|
0
,
&
Входные данные:
foo bar
bar foo
foo bar
Выход:
foo bar
bar foo
foo bar
Входные данные:
0123456789
1234567890
2345678901
3456789012
4567890123
Выход:
123456789
234567890
345678901
456789012
567890123
правила
- Вывод должен быть именно таким, как ввод, за исключением строк, где первый символ - это число.
- Ваша программа не может добавлять / добавлять в файл что-либо, кроме одного завершающего символа новой строки, если хотите.
- Ваша программа может не делать никаких предположений относительно ввода. Он может содержать пустые строки, без цифр, символов Unicode, что угодно.
- Если число с более чем одной цифрой начинается строкой (например
523abcdefg
), только первая цифра (в примере 5) должна превращаться в пробелы.
победитель
Самый короткий код на каждом языке выигрывает. Удачи и удачи!
code-golf
number
whitespace
MD XF
источник
источник
Of course, this will not be perfect; it cannot be used, for instance, when a number is the first character on a line of source.
Не правда, просто сделайте первый символ 0 (хм, ваш последний контрольный пример)Ответы:
Сетчатка , 9 байт
Попробуйте онлайн! Примечание: завершающий пробел в последней строке.
источник
Кубически 69 байтов
Попробуйте онлайн!
Объяснение:
Сначала мы делаем эту инициализацию:
Чтобы настроить этот куб:
Самая важная вещь в этом кубе - это
5
сумма граней 32, которая является значением, необходимым для печати пробелов. По совпадению, это также оказывается довольно коротким для всех других вычислений. После этого сделано:источник
Шелуха ,
1513 байт-2 байта благодаря @Zgarb
Попробуйте онлайн!
Использует ту же технику, что и @Jonathan Allan
объяснение
источник
Γ
.JavaScript (ES8),
3837 байтЯ не думаю, что это может быть улучшено намного больше.Сохранено 1 байт благодаря Shaggy - Используйте функции ES8.
источник
padEnd
вот так:s=>s.replace(/^\d/gm,m=>"".padEnd(m))
Python 2 ,
98746765 байт24 байта благодаря Джонатану Аллану. -7 байт благодаря мистеру Xcoder.
Попробуйте онлайн!
Принимает ввод в файл с именем
f
.источник
open
; Код ожидает файл с именем «F». Я думаю это нормально?' '*0
это ложь. Использование[:1]
по-прежнему сохраняется.read
Мне не нужно (и так было быreadlines
), поскольку по умолчанию поведениеopen
состоит в том, чтобы перебирать строки. Также нет необходимости в режиме, так'r'
как по умолчанию. Если я прав, это 73 !Рубин ,
2421 + 1 =2522 байтаИспользует
-p
флаг. -3 байта из ГБ.Попробуйте онлайн!
источник
%p
в конце вместо%""
. Спасибо за вашу помощь!05AB1E , 10 байтов
Попробуйте онлайн!
источник
|vy¬dićú},
работает на 10 байтов.|
работает. Предполагаетсяpush the rest of input as an array with strings
, но останавливается на пустых строках ( TIO ). Я поднял это в чате 05AB1E, если вы хотите узнать больше.Python 3 , 95 байт
Попробуйте онлайн!
-4 байта, украдя идею регулярных выражений из ThePirateBay
источник
Желе , 19 байт
Монадическая ссылка, берущая и возвращающая списки символов, или полная программа, печатающая результат.
Попробуйте онлайн!
Как?
источник
beheaded line
Это фактический термин? xDPerl 5 , 13 + 1 (-p) = 14 байт
Попробуйте онлайн!
источник
Haskell , 63 байта
Попробуйте онлайн! Первая строка - это анонимная функция, которая разбивает данную строку на строки, применяет функцию
g
к каждой строке и объединяет результирующие строки с символами новой строки. Вg
нем проверяется, является ли первый символx
строки цифрой. Если это так, то['1'..x]
получается строка длиной, равной значению цифры,x
и' '<$
преобразует строку в столько пробелов. Наконец, остальная часть строкиr
добавляется. Еслиx
это не цифра, мы находимся во втором уравненииg s=s
и возвращаем строку без изменений.источник
Python 2 ,
76 7268 байт-4 байта благодаря @ovs !
@DeadPossum предложил перейти на Python 2, который также сэкономил 4 байта.
Просто подумал, что хорошо иметь полноценную программу на Python 2, которая не проверяет явно, является ли первый символ цифрой. Это читает входные данные из файла
f
.Попробуйте онлайн! (любезно предоставлено @ovs )
источник
print
даст вам 68 байтЯва 8 ,
105999793 байтСохранено еще несколько байтов благодаря предложению Невей,
источник
s->{int i=s.charAt(0);if(i>47&i<58)for(s=s.substring(1);i-->48;s=" "+s);System.out.print(s);}
(93 байта).R ,
138128 байт-9 байт благодаря CriminallyVulgar
Это довольно плохо, но теперь это немного лучше ... R, опять же, ужасен на струнах.
Попробуйте онлайн!
источник
Japt (v2.0a0),
1110 байтДжапт избивает желе и 05AB1E? Это не кажется правильным!
Проверь это
объяснение
Неявный ввод строки
U
Используйте Regex replace (
r
) для всех вхождений цифры в начале строки (m
это многострочный флаг - этотg
флаг включен в Japt по умолчанию).Передайте каждое совпадение через функцию, где
Z
находится текущий элемент.Оператор приращения постфикса (
++
). Это преобразуетZ
в целое число, не увеличивая его для следующей операции.Повторите пробел
Z
раз.Неявно выведите полученную строку.
источник
m@
сократить?m
здесь флаг многострочных для регулярных выражений, а не метод карты.r/^\d/m_î
(илиr/^\d/m_ç
) будет на 2 байта короче, ноZ
это строка, поэтому, к сожалению, это не сработает.r/^\d/m_°ç
, Для экономии 1 байт, делает работу, хотя :)°ç
это удивительный трюк :-) Я бы предложил только\d
для регулярных выражений, но это оставляет флаг ... возможно, я должен добавить поддержку флагов для регулярных выражений для одного класса, например,\dm
(о да, и это исключает^
слишком ...)/
необязательным в RegExes?Желе , 19 байт
Попробуйте онлайн!
Всего -5 байт благодаря комментариям Джонатана Аллана и просмотру его поста.
объяснение
источник
Ḣ⁶ẋ;
;0Ḣ
будет работать для одного байта, может быть, есть один атом, я тоже пытался¹
, без радостиḣ1ẇØD
работает на тот же bytecount \ o /ṚṪ
будет работать :)Пиф ,
1615 байтПопробуйте онлайн!
объяснение
Давайте рассмотрим пример, который должен быть проще в обработке. Скажите, что наш вклад:
Программа выше сделает следующее:
.z
- Читает все это и разбивает его на новые строки, так что мы получаем['foo bar foo bar', '1foo bar foo bar foo bar', '2foo bar foo bar foo bar foo bar']
.Мы получаем первый символ каждого:
['f', '1', '2']
.Если оно может быть преобразовано в целое число, мы повторяем пробел целое число раз и добавляем остаток строки. Иначе, мы просто помещаем всю строку. Следовательно, мы имеем
['foo bar foo bar', ' foo bar foo bar foo bar', ' foo bar foo bar foo bar foo bar']
.Наконец, мы присоединяемся к новым строкам, поэтому наш результат:
источник
Кубически , 82 байта
Примечание: это не будет работать на TIO . Чтобы проверить это, используйте интерпретатор Lua с установленным для эксперимента флагом true (чтобы включить условные выражения). В настоящее время имеется ошибка с условными блоками в интерпретаторе TIO. При использовании интерпретатора TIO вы должны заменить
?6!
на!6
и&6
на?6&
, чтобы количество байтов оставалось неизменным.Это не так коротко, как другой кубический ответ, но я все равно решил попробовать: D
источник
)
переходит к последней версии,(
а не к той, которую я считаю. РЕДАКТИРОВАТЬ: я в чате.> <> , 60 байт
Попробуйте онлайн!
Как это устроено:
источник
V , 9 байт
Попробуйте онлайн!
объяснение
источник
Гема, 21 персонаж
Образец прогона:
источник
PHP, 83 символа
источник
$s
аргументом arg или заполнить его вводом. И это ничего не печатаетargv
приемлемо?argv
что это аргументы командной строки, то да.