Stwórz kwadratowy kod ze swoim ulubionym słowem

47

Wybierz swoje ulubione 6-literowe wspólne angielskie słowo, które nie ma powtarzających się liter , takie jak wombat.

Napisz program w siatce znaków N × N bez komentarzy, tak aby każdy wiersz i kolumna zawierał wszystkie litery twojego słowa pisane małymi literami w dowolnej kolejności. Program musi wypisać definicję słowa w postaci 36 lub więcej znaków .

Zasady

  • Wyjście na standardowe wyjście. Brak danych wejściowych.
  • Twoje słowo musi znajdować się na Dictionary.com i zawierać tylko az. Bez właściwych rzeczowników, bez skrótów, bez skrótów, bez skurczów.
  • Twój program i dane wyjściowe mogą zawierać tylko drukowalne znaki ASCII (kody szesnastkowe od 20 do 7E). (To nie liczy koniecznych nowych linii w siatce programu).
  • Komentarze to wszystko, co kompilator lub tłumacz tradycyjnie ignoruje. Możesz użyć kodu, który nie przyczynia się do wyjścia lub nie zostaje oficjalnie wykonany.
  • Definicja wyjściowa powinna być gramatyczna i dokładna, ale z pewnością może być zabawna lub sprytna.
  • Każdy wiersz lub kolumna, która zawiera przynajmniej 6 unikalnych liter Twojego słowa, jest ważna. Przekątne nie mają znaczenia.

Punktacja

To jest kod golfowy, ale ponieważ wszystkie zgłoszenia muszą mieć ten sam kwadratowy format, możesz po prostu określić swój wynik za pomocą N. Najniższe N ​​wygrywa, a oczywiście N poniżej 6 jest niemożliwe. W przypadku remisu wygrywa najwyższa głosowana odpowiedź.

Przykład

Jeśli Twoim słowem było wombatTwoje, program może wyglądać tak (N = 7):

wombatD
ombatEw
mbatFwo
bat(wom
atWwomb
tBwomba
)wombat

Zauważ, że każdy wiersz i każda kolumna ma znaki w o m b a t.

Wynik może być: (40 znaków)

Cute short-legged Australian marsupials.
Hobby Calvina
źródło
OK, musisz utworzyć siatkę przy użyciu sześcioliterowego słowa, ale wtedy nie rozumiem wyniku: „Śliczne australijskie torbacze o krótkich nogach”.
CousinCocaine
@CousinCocaine To jest opis wombata. Powinieneś podać gramatyczny i dokładny opis wybranego słowa.
ProgramFOX
Ponieważ to jest kod golfowy, kto decyduje, co jest właściwe? „Urocze australijskie torbacze z krótkimi nogami” czy „torbacze z krótkimi nogami”?
CousinCocaine
5
Pomysł: wpisz słowo „ golfed” i definicję "a description of this program's code"(dla każdego, kto może wymyślić, jak to zrobić!).
Klamka
6
cholera, nie mam ulubionego długiego 6-znakowego słowa
user902383

Odpowiedzi:

18

Perl - winogrona - 11

edytuj: Przypadkowo utworzyłem 12 linii ...

$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)

Wynik:

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

Aktualizacja!

Usunąłem linię, aby sprowadzić ją do 11, ale musiałem zmienić zdanie. Mam nadzieję, że tym razem nie popełniłem żadnych błędów!

$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

Wynik:

A purple game? No, a great grape; eat

Dane wyjściowe to 37 znaków.

hmatt1
źródło
Podoba mi się to przede wszystkim ze względu na mały wiersz wyjściowy. Szkoda, że ​​to nie było haiku :)
Matt Fletcher
1
To jest 12x11 ...
Schism
@schism wow ... Strzelaj! Naprawię to. Dzięki!
hmatt1
Zaraz to zaakceptuję, ale wciąż ma 12 lat.
Calvin's Hobbies
47

JavaScript - akcja - 15x15

„Zdecydowanie nie najkrótszy, ale PEW PEW PEW.” - James Bond

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)

Link do

wyjścia jsfiddle (37 znaków):

action means PEW PEW PEW PEW PEW PEW 
izlin
źródło
Twój pierwszy wiersz powinien zawierać małą literę a.
Calvin's Hobbies
@ Calvin'sHobbies Masz rację. Naprawiłem to.
izlin
35

Befunge 93, n = 13

Działa to poprzez przekierowanie łańcucha za pomocą "vi >". Działa to tylko wtedy, gdy długość boku i długość słowa są koprime, a długość boku jest większa niż 11. W tej chwili działa dla „słowa” vwombat, a zatem dla 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>:#,_@

Wyjścia Cute short-legged Australian marsupial

Zaq
źródło
25

C (słowo: „finder”, 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}

Kompilowany z GCC, z opcjami -Dfinder="" -Df="" -Di="" -Dn="" -Dd="" -De="" -Dr="".

Wyprowadza it's defined as a thing that can find other things(50 znaków). Wierzę, że przestrzega wszystkich zasad, ale możesz mi powiedzieć, czy jest jakiś błąd!

maxdefolsch
źródło
3
Wygląda poprawnie, choć nie jestem szalony na temat wszystkich opcji kompilatora.
Calvin's Hobbies
1
Oczywiście trochę tu zgiąłem zasady. Na początku szukałem wielu definicji, dlatego wybrałem słowo „znajdź” (ponieważ zawiera prawie takie same litery jak „zdefiniuj”).
maxdefolsch
9
używanie makr nie jest dobrym pomysłem. jeśli jest to dozwolone, możesz powiedzieć n = 6 i skompilować go z tymi:"-Dfinder=main(){puts(it's defined as a thing that can find other things);}" -Dinderf=; -Dnderfi=; -Dderfin=; -Derfind=; -Dnderfi=;
bebe
Zgadza się, nawet o tym nie pomyślałem.
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"."

Przykład wombata zakodowany w GolfScript. Dane wyjściowe to

Cute short-legged Australian marsupials.

jak podano w pytaniu. Interesujące jest to, że możesz użyć większości słów i odpowiedzi i po prostu wstawić odpowiednie litery do rozwiązania, o ile nie stworzysz wbudowanego GolfScript, który jest bardzo rzadki p, co njest oczywiste. Wszystkie inne kombinacje prowadzą do prawidłowych zmiennych GolfScript, które domyślnie nie są ops.

Howard
źródło
Sądzę więc, że można to znacznie zredukować dzięki sprytnej frazie, która wykorzystuje wiele liter tego słowa.
Martin Ender
@ MartinBüttner Próbowałem, ale 36 znaków utrudnia.
Howard
Wykorzystałem twoje podejście do złożenia „kwadratowego” (patrz poniżej). W rzeczywistości jest to jedna postać większa od twojej, ale przy sprytnych zmianach można ją skompresować.
Martin Ender,
18

Befunge-98 (n = 12)

Wybrałem Kelvin, ponieważ miał w sobie av. Wyjściakelvin 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
waylon531
źródło
niestety Si tempbrakuje 29 znaków z 36.;)
Martin Ender
Wygląda na to, że ilekroć piszę w Befunge-93, ktoś podąża za podobnym rozwiązaniem Befunge-98 ...
Zaq 30'14
@Zaq nie martw się, -93 i tak sprawia więcej radości.
patrz
Linia 2 nie ma numeru i.
Schism
Brakuje również wiersza 4 ki kolumny 9 e.
Schism
11

Python, n = 15

Słowo to „kajaki”

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()

Wynik:

Secret weapon of the Canadian navy
Gerrat
źródło
Jest to 16x15!
Schizma
Dzięki ... w pewnym momencie pomyliłem się i poczułem potrzebę dodania tej pojedynczej linii canoes. Naprawiony.
Gerrat
10

Perl - powtórz - 11

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

Wynik:

repeat
repeat
repeat
repeat
...keeps going

Patrząc wstecz, może powinienem był zrobić z tego pętlę.

hmatt1
źródło
12
Nie odpowiada słowu, które nie wymaga powtarzania liter .
Howard
3
@Howard Istnieją jednak co najmniej 2 ew linii, więc pomyślałem, że równie dobrze mogę to opublikować.
hmatt1
6

Rubin , hatersN = 10

Po wielogodzinnych próbach ręcznego napisania programu generatora i poprawieniu parametrów w końcu znalazłem rozwiązanie dla N = 10!

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

Wysyła Haters nurse hate in hardest hearts.dokładnie 36 znaków. Wypróbuj online!

Wybrałem Ruby, ponieważ jego zmienne nie potrzebują $ ( Perl ), a ciągi cudzysłowu mogą zawierać znaki nowej linii ( Python ). Fakt, że trmetoda wykorzystuje dwie litery mojego słowa, był nieoczekiwaną korzyścią. Trzon programu jest prosty:

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

Ułożenie wszystkich liter w rzędzie oczywiście nie było łatwe. Przejrzałem kilka wariantów tej samej struktury i nauczyłem się kilku rzeczy o Ruby w tym procesie ( trnie potrzebuje nawiasów i ?\sjest innym sposobem na uzyskanie spacji). Było wiele ślepych zaułków i kilka fałszywych trafień. A potem ... sukces!

Oto sedno mojego zhakowanego programu generatora, jeśli ktoś jest zainteresowany.

DLosc
źródło
5

Skrypt golfowy (n = 10)

Mój pierwszy skrypt golfowy! Drukujekelvin 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
waylon531
źródło
Co znaczy „lowe”?
aditsu
1
Dictionary.com mówi, że może to oznaczać low
waylon531
Odnosi się to tylko do czasownika, co oznacza: palić; blask / (osoby), aby poczuć silne emocje; świecić z podniecenia. Nie rozumiem, jak to tutaj działa.
aditsu
Spójrz na cytat w prawym górnym rogu strony
waylon531
1
Przepraszamy, ale „lowe” jest nieco zbyt niejasne. Zaakceptuję to, jeśli możesz sprawić, że będzie „niski” lub „niższy”.
Calvin's Hobbies
5

GolfScript, 13x13

Nie najmniejszy ...

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..."

... ale ...

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

(Podział wierszy w słowach jest celowy, ponieważ inaczej miałbym wiodące lub końcowe białe znaki, które wyglądałyby mniej kwadratowo.)

Martin Ender
źródło
4

Python, N = 11

Słowo to „rodzic”. Ten kod nie jest ładny, ale działa.

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

Wynik: parent: a person that made a person

Edycja: Jakoś przegapiłem fakt, że kolumny muszą również zawierać słowo. Patrząc wstecz, język zawierający znaki końcowe jako część języka nie był dobrze dopasowany do tej układanki.

Tomasz
źródło
4
Fajnie, ale nie każda kolumna zawiera słowo parent. Na przykład pierwszy nie ma a.
ProgramFOX,
2
Wciąż brakuje kilku. pbrakuje w 6 i 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.
Schizm
2

Pip , n = 14 (niekonkurencyjny)

Język jest nowszy niż pytanie. Słowo jest 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"  :)

Wyprowadza następującą (co prawda niekompletną) definicję:

quines drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje quines, który drukuje piny, które wypisują piny, które wypisują piny, które wypisują piny, które wypisują piny

Wypróbuj online!

Znacząca część kodu działa w ten sposób:

++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"

Reszta kodu to dowolne przypadki braku operacji. Główną trudnością w sekcjach „wypełniających” było nigdy nie oceniać q, ponieważ poprosi użytkownika o wprowadzenie linii wejściowej (nie jest to problem w TIO, ale chciałem poprawić go we wszystkich środowiskach). Kiedyś Zwarcie operatorów logicznych |i &, i trójskładnikowych ?, aby zapobiec q„s oceny.

1 Dictionary.com ma wpis dla quine , u dołu sekcja dotycząca znaczenia programowania. Ponieważ „quine” jest rzeczownikiem policzalnym, argumentowałbym, że „quines” jest poprawnym słowem.

DLosc
źródło
1

JavaScript, N = 8

Moje słowo to alerty .

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

Mój kod wysyła definicję funkcji alertu javascript wiele razy. Definicja alertu w języku JavaScript to „funkcja alert () {[kod natywny]}”.

Tylko pierwsze trzy wiersze kodu faktycznie wpływają na wynik. Ostatnie 5 wierszy to błędy składniowe, ale pierwotne reguły stanowiły, że nie cały kod musi zostać wykonany, dopóki dane wyjściowe są poprawne.

Oto link do skrzypiec: http://jsfiddle.net/tze76pum/

Krem Rabarbarowy
źródło
1
Miły, ale niezbyt powszechny angielski.
Calvin's Hobbies