Бывший министр обороны США Дональд Рамсфелд, как известно, популяризировал фразу «известные известные». Здесь мы собираемся перевести его замечания в строфу из четырех строк.
В частности, выведите этот текст:
known knowns
known unknowns
unknown knowns
unknown unknowns
Использование заглавных букв не имеет значения (например, Known unKnowns
это нормально), и допускается одиночный завершающий перевод строки, но другие изменения форматирования не допускаются. Это означает один пробел между словами и либо LF
(59 байт), либо CR/LF
(62 байт) между строками.
правила
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
code-golf
string
kolmogorov-complexity
code-golf
sequence
binary
base-conversion
binary-matrix
code-golf
string
classification
code-golf
tips
python
code-golf
combinatorics
binary
subsequence
restricted-time
code-golf
number
number-theory
code-golf
math
number
complex-numbers
code-golf
string
code-golf
string
code-golf
string
random
game
king-of-the-hill
python
code-golf
number
sequence
code-golf
number
sequence
code-golf
code-golf
math
number
array-manipulation
code-golf
array-manipulation
decision-problem
code-golf
string
code-golf
sequence
integer
AdmBorkBork
источник
источник
Ответы:
Python 2 ,
5452 байта-2 байта благодаря xnor
Попробуйте онлайн!
Результатом от
/
и%
будет то,[[2, 2], [2, 0], [0, 2], [0, 0]]
что будут начальными индексами, удаляяun
когда2
, сохраняя строку неизменной, когда0
источник
k
быть'unknowns'
, вы можете исправить сk[i/3:7]
и сохранить два байта.Vim
2825 байтЭто мой первый ответ Vim, любые советы по игре в гольф приветствуются.
Спасибо, Линн, за написание скрипта на python для создания этой фантастической анимации.
Это также может быть запущено V Попробуй онлайн!
Также 25:
источник
2iunknown ␛rsYPw2x2YP2xj.
или небольшое изменение2iunknown ␛rsYPw2x2YPⓋjlx
(Ⓥ = Ctrl-V).Баш, 36 байт
другие решения
36
37
38
41
45
если начальный перевод строки и лишний пробел были приняты 31 байт:
источник
05AB1E ,
1312 байтСохранено 1 байт благодаря Эрику Искателю (избегайте закрывающей строки)
Попробуйте онлайн!
объяснение
источник
“Š¢—‚“
->„Š¢—‚
CJam (
2625 байт)Онлайн демо
Декартово произведение
["known" "unknown"]
само с собой, тогда каждый элемент соединяется с пробелом и суффиксом и переводомs
строки.Спасибо Эрику за однобайтовую экономию.
источник
R ,
525150 байтПопробуйте онлайн!
Удивительно короткие команды подстановки и печати делают это действительно конкурентоспособным ответом R в строковом испытании!
Даже если это супер скучно.Слегка интереснее, теперь с сохраненным байтом благодаря J. Doe !Благодаря этому ответу сохранен еще один байт , также от J.Doe!
источник
Haskell ,
60585351 байтПопробуйте онлайн!
Выводит список строк, как было недавно разрешено. Спасибо @firefrorefiddle за указание.
-2 байта благодаря Коул .
58-байтовая версия:
Попробуйте онлайн! Возвращает одну строку.
источник
unlines
потому что «список из четырех строк будет в порядке, так как он по-прежнему сохраняет пробел между словами»; (Комментарий к оригинальному вопросу).C # (.NET Core) , 54 байта
Попробуйте онлайн!
источник
Сетчатка ,
3332 байтаПопробуйте онлайн! Редактировать: 1 байт сохранен благодаря @ovs. Пояснение: Это почти тривиальный подход использования заполнителя для
known
, за исключением того, что здесь я просто вставляю его перед каждым пробелом илиs
, что экономит34 байта.источник
|s
подход: tio.run/##K0otycxL/P@fK1shu/jQtmyF0rzsYi6rhGyu7Lz88jyu3IQ4rtK8//…PHP,
55 5147 байтпопробуйте это онлайн
источник
<?=
это самый короткий вариант.Сетчатка ,
3332 байтаСохранено 1 байт с использованием промежуточного метода печати от Лео.
Попробуйте онлайн!
объяснение
Превращает несуществующий (т.е. пустой) ввод в строку во второй строке. Это кажется довольно странным, но эти символы являются кодами для вещей, которые идут между двумя экземплярами
known[s]
в первых двух строках результата. Пространство и перевод строки только сами по себе иu
естьun
.Теперь мы вставляем
knowns
в каждую позицию (то есть в начало, конец и между каждой парой символов).Мы расшифруем
u
.Затем мы избавляемся от
s
s перед пробелами, то есть в первой половине каждой строки, и выводим результат.И, наконец, мы добавляем
un
обе строки и печатаем результат снова.Это превосходит тривиальный подход, состоящий только в использовании заполнителя на
known
4 байта, но не в более эффективной реализации Нейлом этого подхода.источник
Язык программирования Шекспира ,
10211012993 байта-19 байтов благодаря Джо Кингу!
Попробуйте онлайн!
источник
the sum of
Perl 6 , 45 байт
Попробуй
расширенный
[X](…)
Часть генерируетЗатем использование
X~
on приводит его внутренние списки в Str (из-за&infix:«~»
оператора), что добавляет пробел между значениями.Затем каждый соединяется с
s
источник
Haskell,
5752 байтаПопробуйте онлайн!
источник
APL (Dyalog) ,
644735 байтПопробуйте онлайн!
Как?
k←'known'
-k
это"known"
k('un',k←'known')
-"known" "unknown"
∘.
...⍨
- внешний продукт с собой{⍺,' ',⍵,'s'}
- с функцией, которая форматирует аргументы как{⍺} {⍵}s
,
разбить таблицу продуктов в вектор⍪
- отдельно от столбцовисточник
Java 8,
5655 байт-1 байт благодаря @SuperChafouin .
Объяснение:
Попробуй это здесь.
источник
\r
? ^^ 'v->" s\n uns\nun s\nun uns".replaceAll(" |s","known$0")
C (gcc),
797876 байтовСпасибо @Justin Mariner за один байт в гольф!
Попробуйте онлайн!
источник
%1$s
и избавитесь отi
: попробуйте онлайн!Шелуха , 14 байт
Попробуйте онлайн!
объяснение
источник
6502 машинный код (C64), 48 байтов
Онлайн демо
Использование:
sys49152
Как это устроено
Хитрость заключается в том, чтобы использовать «счетчик цикла» для 8 итераций, где биты с 7 по 1 начального значения предназначены
1
дляunknown(s)
и0
дляknown(s)
одной итерации. Этот счетчик смещается влево после каждой итерации (смещая самый левый бит в флаг переноса), и бит0
изначально установлен,1
поэтому мы знаем, что мы закончили, как только последний бит был сдвинут. На первой итерацииknown
печатается, потому что при вызове программы флаг переноса сбрасывается.В каждой итерации конец строки переключается между
<space>
иs<newline>
.Вот прокомментированный список разборки:
источник
Perl 5 , 33 байта
Отказ от ответственности : я не понимаю , что в фигурных скобках было возможно в пределах
<...>
оператора (узнал благодаря @ грязном «s ответ !) И используя хитрую уловку расширения от @ NahuelFouilleul » s удивительный Баш ответ , я был в состоянии построить это решение. Я с радостью удалю это по любой из их просьб.Попробуйте онлайн!
Perl 5 , 42 байта
41 байтовый код + 1 для
-p
.Попробуйте онлайн!
Perl 5 , 45 байт
Пытался придумать альтернативу, но не смог сделать ее короче ... Думаю, она достаточно отличалась, чтобы все равно добавить.
Попробуйте онлайн!
источник
Haskell,
71665654 байтаСпасибо @Leo за -3 байта!
Примечание: в комментариях к вопросу оп сказал, что возвращение списка строк в порядке
Попробуй это здесь.
источник
fmap
может быть сокращена доmap(' ':)
:)f=
.Желе , 15 байт
Попробуйте онлайн!
источник
Рубин,
5350 байтисточник
\n
буквальным переводом строки.Пакетный, 66 байт
Альтернативный ответ, также 66 байтов:
источник
Haxe, 71 байт
Попробуйте онлайн!
источник
С (ССЗ) ,
7066 байтСпасибо @ l4m2 за -4 байта!
Попробуйте онлайн!
источник
f(i){for(i=8;i--;)printf("unknown%s"+(i>4|i==2)*2,i%2?" ":"s\n");}
L"ੳ "+i%2
вместоi%2?" ":"s\n"
PowerShell ,
4644 байтаПопробуйте онлайн!
(Почти) простая замена строки. Использует подход Нейла, чтобы урезать два байта. Спасибо Мартину за то, что указал на это.
К сожалению, он короче, чем более интересный метод кросс-произведения, на
трипятьтри байта:PowerShell ,
4947 байтПопробуйте онлайн!
источник
T-SQL,
5654 байтаSQL поддерживает разрывы строк внутри строковых литералов, поэтому они похожи на некоторые другие уже опубликованные языки.
РЕДАКТИРОВАТЬ : немного длиннее ( 82 байта ), но немного умнее:
РЕДАКТИРОВАТЬ 2 : Мой любимый до сих пор, используя перекрестное самостоятельное соединение из производной таблицы ( 79 байт ):
РЕДАКТИРОВАТЬ 3 : Изменен символ замены с
'x'
на1
, что позволяет мне удалять кавычки вокруг него и сохранять 2 байта, посколькуREPLACE
выполняет неявное преобразование в строку.источник
ReRegex , 38 байт
Попробуйте онлайн!
источник
a/known / z/s\n/aazaunazunaazunaunaz
кажется, работает на 36 байтов.Javascript
66 54 5350 байтистория
источник
replace
сохранения одного байта.0
s и использование.replace(/ |s/g,'known$&')
(которое теперь экономит только 3 байта).