Сделайте квадрат кода с вашим любимым словом


47

Выберите свое любимое 6-буквенное распространенное английское слово, которое не имеет повторяющихся букв , например wombat.

Напишите программу в N × N сетке символов без комментариев , чтобы каждая строка и столбец содержали все буквы вашего слова в нижнем регистре в любом порядке. Программа должна вывести определение вашего слова из 36 символов или более .

правила

  • Вывод на стандартный вывод. Там нет ввода.
  • Ваше слово должно быть на Dictionary.com и содержать только аз. Нет собственных имен, аббревиатур, сокращений, сокращений.
  • Ваша программа и выходные данные могут содержать только печатные символы ASCII (шестнадцатеричные коды от 20 до 7E). (Это не считая необходимых новых строк в сетке программы.)
  • Комментарии - это все, что традиционно игнорирует компилятор или интерпретатор. Вы можете использовать код, который не вносит свой вклад в вывод или официально не выполняется.
  • Выходное определение должно быть грамматическим и точным, но, безусловно, может быть забавным или умным.
  • Допустима любая строка или столбец, которые содержат как минимум 6 уникальных букв вашего слова в нижнем регистре. Диагонали не имеют значения.

счет

Это кодовый гольф, но поскольку все заявки должны быть в одинаковом квадратном формате, вы можете просто указать свой результат с помощью N. Наименьшее N выигрывает, и, конечно, N ниже 6 невозможно. В случае связей победит ответ, получивший наибольшее количество голосов.

пример

Если ваше слово было wombatвашей программой, она может выглядеть так (N = 7):

wombatD
ombatEw
mbatFwo
bat(wom
atWwomb
tBwomba
)wombat

Обратите внимание, что в каждой строке и каждом столбце есть символы w o m b a t.

Выход может быть: (40 символов)

Cute short-legged Australian marsupials.

Хорошо, вы должны создать сетку, используя 6-буквенное слово, но тогда я не понимаю вывод: «Симпатичные короткие ноги австралийских сумчатых».
Кузен Кокаин

@CousinCocaine Это описание вомбата. Вы должны вывести грамматическое и точное описание выбранного вами слова.
ProgramFOX

Так как это код гольф, кто решает, что правильно? "Милые короткие ноги австралийских сумчатых" или "короткие ноги сумчатых"?
Кузен Кокаин

5
Идея: имейте слово « golfed» и определение "a description of this program's code"(для тех, кто может понять, как это сделать!).
Дверная ручка

6
блин, у меня нет любимого длинного слова из 6 символов
user902383

Ответы:


18

Perl - виноград - 11

редактировать: я случайно сделал это 12 строк ...

$epagsr=$";
$,=$epagsr;
/gaerp/;say
grep!/a*s/,
qw(A searpg
purple sgar
rpssg pear?
No, a sgerp
s great pse
as grape; s
eat prgpsga
up! sgarse)

Выход:

A purple pear? No, a great grape; eat up!

Обновить!

Я убрал строку, чтобы уменьшить ее до 11, но мне пришлось изменить предложение. Надеюсь, на этот раз я не допустил ошибок!

$gpasre=$";
$,=$gpasre;
/paerg/;say
grep!/a*s/,
qw(A sgrpea
purple sarg
ressp game?
No, a rgspe
s great gsp
as grape; s
eat),$spegr

Выход:

A purple game? No, a great grape; eat

Выход составляет 37 символов.


Мне нравится это прежде всего из-за небольшого выходного стихотворения. Позор, это не было хайку :)
Мэтт Флетчер

1
Это 12x11 ...
Раскол

@ схизм вау ... Стреляй! Я исправлю это. Спасибо!
hmatt1

Собираюсь принять это, но это все еще 12 в высоту.
Увлечения Кэлвина

47

Javascript - действие - 15x15

«Определенно не самый короткий, но PEW PEW PEW». - Джеймс Бонд

ction="action "
ction+="means "
actionac="PEW "
ctionact="PEW "
tionacti="PEW "
ionactio="PEW "
onaction="PEW "
nactiona="PEW "
ction+=actionac
ction+=ctionact
ction+=tionacti
ction+=ionactio
ction+=onaction
ction+=nactiona
alert(""+ction)

Ссылка на

вывод jsfiddle (37 символов):

action means PEW PEW PEW PEW PEW PEW 

Ваша первая строка должна содержать строчные буквы a.
Увлечения Кэлвина

@ Calvin'sHobbies Вы правы. Я починил это.
Излин

35

Befunge 93, n = 13

Это работает путем перенаправления строки с "vи >". Это работает только тогда, когда длина стороны и длина слова взаимно просты, и когда длина стороны больше 11. Прямо сейчас, это работает для «слова» vwombatи, следовательно, для wombat.

"laip"vwombat
wombat>"usr"v
"am "vwombat>
ombat>"nai"vw
lar"vwombat>"
mbat>"tsu"vwo
 d"vwombat>"A
bat>"egg"vwom
-"vwombat>"el
at>"tro"vwomb
"vwombat>"hs 
t>"tuC"vwomba
vwombat>:#,_@

Выходы Cute short-legged Australian marsupial


25

C (слово: «искатель», N = 16)

main() finder{ f
printf(finder  i
"it's defined "r
"as a t"finder d
"hing t"finder e
"hat ca"finder r
"n find other t"
"hings" finder);
finder finder f\
inder finder fi\
nder finder fin\
der finder find\
er finder finde\
r finder finder
 finder finder n
return 0;finder}

Составлено с GCC, с опциями -Dfinder="" -Df="" -Di="" -Dn="" -Dd="" -De="" -Dr="".

Он выводит it's defined as a thing that can find other things(50 символов). Я полагаю, что это следует всем правилам, но не стесняйтесь сказать мне, если есть какая-либо ошибка!


3
Выглядит правильно, хотя я не в восторге от всех опций компилятора.
Увлечения Кэлвина

1
Конечно, я немного согнул правила. Сначала я искал много определений, поэтому я выбрал слово «поиск» (так как оно содержит почти те же буквы, что и «определение»).
maxdefolsch

9
не очень хорошая идея использовать макросы. если это разрешено, вы можете сказать n = 6 и скомпилировать его так:"-Dfinder=main(){puts(it's defined as a thing that can find other things);}" -Dinderf=; -Dnderfi=; -Dderfin=; -Derfind=; -Dnderfi=;
bebe

Это верно, я даже не думал об этом.
maxdefolsch

21

GolfScript, N = 12

wombat"Cute"
ombat" sho"w
mbat"rt-l"wo
bat"egge"wom
at"d Au"womb
twomb"stra"a
wom"lian "bt
ttwomb"mar"t
"sup"wbwomat
"ia"womabbtt
"ls"bawomtbt
aaawomobt"."

Пример вомбата, закодированный в GolfScript. Выход

Cute short-legged Australian marsupials.

как указано в вопросе. Самое интересное в том , что вы можете использовать большинство слов и ответы , а просто вставить соответствующие буквы в раствор до тех пор , пока вы не производят GolfScript встроенный в которой очень редки, p, nбудучи очевидным из них. Все остальные комбинации приводят к допустимым переменным GolfScript, которые по умолчанию не допускаются.


Так что я думаю, что это можно значительно сократить с помощью умной фразы, которая использует множество букв из слова.
Мартин Эндер

@ MartinBüttner Я пытался, но 36 символов делают это довольно сложно.
Говард

Я использовал ваш подход для «квадратного» представления (см. Ниже). На самом деле он на один символ больше вашего, но при некотором умном перемещении его можно сжать.
Мартин Эндер

18

Befunge-98 (n = 12)

Я выбрал Кельвина, потому что он был в нем. Выходыkelvin is like celsius but it's lowe

"ewol "vnlik 
"t's"ke<ilnv 
kelniv"t i"< 
elnik>"ub "v 
nkv"elsius"< 
ln>"c eki"vl 
v0ke"is l"<n 
>" nivlek" v 
ielnv,k4'k#< 
 vivlevlnek< 
 ilkkninevei 
  elnkn vnle

к сожалению, Si temp29 символов не хватает 36.;)
Мартин Эндер

Кажется, что когда бы я ни писал в Befunge-93, кто-то
следил

@Zaq не волнуйся, в любом случае -93 веселее.
Seequ

Линия 2 не имеет я.
Раскол

Кроме того, в строке 4 отсутствует a, kа в столбце 9 отсутствует e.
Раскол

11

Python, n = 15

Слово "каноэ"

def canoe(s='S\
ecret weap',sno
='ce',a='ons o\
f the Can',oces
=1,oesn=1,c='a\
dian navy',cose
="""aoenscanaen
canceessanoeeca
anoasanooscanoe
noescccccaeescc
oescneocaeoesca
escaoescan"""):
 canoes=s + a+c
 print (canoes)
s=1;    canoe()

Выход:

Secret weapon of the Canadian navy

Это 16x15!
Раскол

Спасибо ... в какой-то момент я ошибся и почувствовал необходимость добавить эту единственную строчку canoes. Исправлена.
Геррат

10

Perl - повтор - 11

$repeat=qq(
repeat);say
"repeat\n"x
length'pear
repeatrepea
epeatrepeat
peatrepeatr
eatrepeatre
atrepeatrep
trepeatrepe
repeat....'

Выход:

repeat
repeat
repeat
repeat
...keeps going

Оглядываясь назад, возможно, я должен был сделать это петлей.


12
Не соответствует слову, которое не требует повторения букв .
Говард

3
@Howard По крайней мере, 2 в eкаждой строке, поэтому я решил, что я мог бы также опубликовать это.
hmatt1

6

Рубин , hatersN = 10

После нескольких часов попыток вручную, написания программы генератора и настройки параметров, я наконец нашел решение для N = 10!

aser=ts=?h
tah=re=?\s
sh='Haters
nurse hate
in hardest
hearts.'  
rtse=erha=
era=sh.tr'
',tah;aser
 puts erha

Выходы Haters nurse hate in hardest hearts., ровно 36 символов. Попробуйте онлайн!

Я выбрал Ruby, потому что его переменные не нужны $( Perl ), а строки в одинарных кавычках могут содержать символы новой строки ( Python ). Тот факт, что trметод использует две буквы моего слова, был неожиданным бонусом. Суть программы проста:

# Store the definition, with newlines
sh='Haters
nurse hate
in hardest
hearts.'
# Transliterate newline to space
erha=sh.tr('
',' ')
# Output
puts erha

Получение всех букв выстраиваться, конечно, было не просто. Я просмотрел несколько вариантов одной и той же структуры и узнал несколько вещей о Ruby в процессе ( trне требует скобок и ?\sявляется еще одним способом получения пробела). Было много тупиков и несколько ложных срабатываний. И тогда ... успех!

Вот суть моей взломанной программы генератора, если кому-то интересно.


5

Golfscript (n = 10)

Мой первый гольф-скрипт! Это печатаетkelvin is like celsius but it's lowe

"kelvin is
like ce"vn
evn"lsiu"k
k"s "elvni
in"bu"kelv
"t "knviel
vl"it'"nke
nevkil"s l
o"ivnkel"w
e"lnevik

Что значит "низкий"?
aditsu

1
dictionary.com говорит, что это может означать low
waylon531

Это относится только к глаголу, что означает: сжигать; пламя / (человека) чувствовать сильные эмоции; светиться от волнения. Я не вижу, как это работает здесь.
aditsu

Посмотрите на цитату в верхнем правом углу страницы
waylon531

1
Извините, но "lowe" немного неясен. Я приму это, если вы можете сделать это «низким» или «более низким».
Увлечения Кэлвина

5

GolfScript, 13x13

Не самый маленький ...

squae"A squar
"uarsquaresqu
uareq"e has f
"resuaresquar
resqa"our equ
"squresquares
quars"al side
"arequaresqua
areuq"s and r
"esqaresquare
esqur"ight an
"quaesquaresq
quar"gles..."

... но ...

A squar
e has f
our equ
al side
s and r
ight an
gles...

(Наличие разрывов строк внутри слов является преднамеренным, потому что в противном случае у меня был бы начальный или конечный пробел, который выглядел бы менее квадратным.)


4

Python, N = 11

Слово «родитель». Этот код не очень красивый, но он работает.

eprnt=" a "
at="person"
rnep="that"
nrpt="made"
ea= " prnt"
e="parent:"
pa =(eprnt+
at+" "+rnep
+ea[0]+nrpt
+ eprnt+at)
print(e+pa)

Выход: parent: a person that made a person

Изменить: Почему-то я упустил тот факт, что столбцы также должны содержать слово. Оглядываясь назад, язык, который включает символы конца строки как часть языка, не очень подходил для этой головоломки.


4
Хорошо, но не в каждом столбце есть слово parent. Первый, например, не имеет a.
ProgramFOX

2
Это все еще не хватает кучу. pотсутствует в 6 и 8 a.: 4, 6, 7, 11 r.: 4, 10, 11 e.: 4, 5, 8, 9, 11 n.: 3, 5, 7, 11 t.: 1, 3, 6, 8.
Раскол

2

Пип , n = 14 (неконкурентный)

Язык новее, чем вопрос. Слово есть quines. 1

n_n|quine say&
qu ines     qi
as  harle quin
se?(equins)ns.
 plums|quinces
|quicken bus++
iness|q++++i u
u:++ingl es?eq
ni*:u; s|qe:",
which "Rns|que
eRL:i|quotesne
PUsn    quiet!
u|qe."print".s
JW"quines"  :)

Выводит следующее (предположительно неполное) определение:

quines печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines quines, которые печатают quines, которые печатают quines, которые печатают quines, которые печатают quines

Попробуйте онлайн!

Значимая часть кода работает так:

++i          Increment i (initially set to 0)
++++i        Increment i twice
u:++i        Increment i again and assign to u (i & u are now 4)
i*:u         Multiply i by u in-place (i is now 16)
e:",         Assign the string ",\nwhich " to e...
which "Rns   after replacing the newline with a space
eRL:i        Make a list of 16 copies of e and assign back to e
ePUs         Push a space to the front of list e
e."print".s  Concatenate "print" and a space to each element of e...
JW"quines"   and join on "quines", wrapping the result in "quines"

Остальная часть кода является произвольным бездействием. Основная трудность в разделах «заполнитель» заключалась в том, чтобы никогда не оценивать q, так как это предложит пользователю ввести строку ввода (не проблема для TIO, но я хотел, чтобы она была правильной во всех средах). Я использовал логические операторы короткого замыкания |и &, и троичные ?, чтобы предотвратить qоценку.

1 Dictionary.com имеет запись для квин , с разделом, посвященным программированию, внизу. Поскольку «quine» является исчисляемым существительным, я бы сказал, что «quines» является допустимым словом.


1

Javascript, N = 8

Мое слово - оповещения .

s= alert
alert(s+
s+alert)
aaltrsee
leraatts
ertsalar
rtsaaela
tsaesarl

Мой код выводит определение функции оповещения JavaScript несколько раз. Определение оповещения в Javascript - это «function alert () {[native code]}».

Только первые три строки кода на самом деле способствуют выводу. Последние 5 строк являются синтаксическими ошибками, но в первоначальных правилах указывалось, что не весь код должен выполняться, пока вывод верен.

Вот ссылка на скрипку: http://jsfiddle.net/tze76pum/


1
Хороший, но не совсем обычный английский.
Увлечения Кэлвина
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.