n
Erstellen Sie bei gegebener Eingabe ein Wortraster mit einer Größe von n
möglichst wenigen Bytes.
Einzelheiten
Die angegebene Nummer ist immer ungerade. Das mittlere Quadrat des Gitters muss immer leer sein (ein Leerzeichen). Die Buchstaben, die das Raster füllen, müssen zufällig aus der englischen Scrabble-Buchstabenverteilung der Buchstaben ausgewählt werden. Das heißt, jede Kachel muss zufällig mit einheitlicher Wahrscheinlichkeit aus den folgenden 100 Zeichen ausgewählt werden:
??EEEEEEEEEEEEAAAAAAAAAIIIIIIIIIOOOOOOOONNNNNNRRRRRRTTTTTTLLLLSSSSUUUUDDDDGGGBBCCMMPPFFHHVVWWYYKJXQZ
wo ?
bezeichnet leere Kacheln.
Wie bei einem Scrabble-Brett sind auch einige Kacheln in diesem Brett Bonusplättchen für eine höhere Punktzahl. Diese Kacheln sind nur auf einem Brett mit einer Größe von 9 oder mehr sichtbar. und sollte alle 3 Zeilen vom mittleren Quadrat in einem nach außen ausgehenden Muster sichtbar sein, sollte aber niemals auf den äußersten Buchstaben erscheinen. Bonusquadrate werden mit Kleinbuchstaben gekennzeichnet, wobei leere Kacheln als !
anstelle von gekennzeichnet werden ?
. In dieser visuellen Demonstration oder in der Referenzimplementierung finden Sie weitere Beispiele für die korrekte Verteilung von Bonusplättchen.
Beispiele
Eingang: 5
Ausgabe:
VNZNT
IFOSN
UD VD
ZIOO?
KTLED
Eingang: 9
Ausgabe:
UWDESTKPW
ItDBaDEdI
TERMDYSTR
ROANJLEFT
EkCI OOsT
IPAJPGM?Y
MZLORETVI
G!EGgPUeI
MNROYOEER
Regeln
Dies ist Code-Golf, also gewinnt der kürzeste Code in Bytes.
- Jedes vernünftige Format kann für E / A verwendet werden, sofern es konsistent ist.
- Sie sollten in der Lage sein, Gitter mit mindestens bis zu 999 zu verarbeiten.
- Alle Standardlücken sind verboten.
Antworten:
Gelee ,
67 65 64 66 6463 BytesEin monadischer Link, der eine Nummer nimmt und eine Liste von Zeichen zurückgibt, oder ein vollständiges Programm, das das Ergebnis druckt.
Probieren Sie es online aus! (Ich bevorzuge es
G
eher mit alsY
weil das quadratischer ist )Wie?
quelle
?
mit ,!
wenn sie in der Bonusplättchen Position sind, lief ich ein paar Sätze (leichter in dem vor Ort9
s!) Sorry ...⁾?!y
bedeutet genau das, aber es scheint zu scheitern.?
), werde ich sie sofort beheben ...R ,
288281267257225214 BytesDank @cole für -1 Byte, Neuordnung der,
?
um die 2 in zu reduzierenrep(2,10)
-10 Bytes, die das erkennen
row(m) == t(col(m))
-41 Bytes dank user2390246 für die Neukonfiguration der Gewichte, das Herunterspielen der Indizierung und einige weitere übliche R-Tipps
Probieren Sie es online aus!
Gibt eine Matrix zurück. Ziemlich einfache Implementierung; tastet n ^ 2 Werte mit der richtigen Verteilung ab und speichert sie als
nxn
Matrix.K
ist der Index des Zentrums.L=col(m)
ist eine Matrix, die die Spaltennummer jedes Elements in der Matrix angibt. Daher berechnen wir!(L-K)%%3
, um die möglichen Spalten (einschließlich der Kanten) zu erhalten, dh diejenigen, die ein Vielfaches von 3 von der mittleren Spalte entfernt sind. Um die Kanten zu entfernen, betrachten wirL-1
undL-n
.L-1
ist0
(falsch) für die erste Spalte undL-n
ist0
für die letzte Spalte. Bewirbt sich&
(elementweiser Boolescher WertAND
) auf diese drei ergibt eine Matrix mitTRUE
in diesen Spalten ein Vielfaches von drei von der Mitte entfernt, ausgenommen die Kanten. Wir speichern dieses Ergebnis alsx
.Wenn wir die Transponierte von nehmen
x
, erhaltent(x)
wir dieselbe Matrix, jedoch für die Zeilenx&t(x)
ist dies eine Matrix, die wir alsi
enthaltend speichern :TRUE
Indizes für die erforderlichen Zellen undFALSE
überall sonst.Dann benutzen wir
chartr
die erforderliche Transformation durchm[i]
und speichern das Ergebnis alsm[i]
, ändern die mittlere Zelle in ein Leerzeichen und geben die Matrix zurück.Wie user2390246 hervorhob, müssen wir nicht testen,
n>=9
da fürn<7
keine Zellen ein Vielfaches von 3 von der Mitte entfernt ist (abgesehen von der Mitte, die ohnehin in ein Leerzeichen geändert wird) und fürn==7
die einzigen Zellen Ein Vielfaches von 3 von der Mitte befindet sich am Rand, sodass sie ausgeschlossen sind. Ordentlich!quelle
?
zu dem Teil der Zeichenfolge verschieben , der dem entspricht,rep(2,9)
und diesen einfach auf erhöhenrep(2,10)
?2,
und 1 für gewinnen10
.rep(c(12,8,9,6,4:1),c(1,1:4,1,10,5))
Spart 10 Bytes. (Sie müssen die Reihenfolge der Buchstaben auf EOAI ändern ...)JavaScript (ES6),
247242 Byte-5 Bytes mit Hilfe von @Shaggy
Test-Snippet
Code-Snippet anzeigen
quelle
c
innerhalb eines der Aufrufe auf verschiebeng
.Perl 6 ,
162161154153 BytesProbieren Sie es online aus!
Nimmt (n-3) / 2 als Eingabe und gibt eine Liste von Buchstabenlisten zurück.
Erläuterung:
quelle
Perl 5 ,
246244 + 1 (-n
) =247245 BytesProbieren Sie es online aus!
quelle
[C64 basic v2,
210209 Bytes]Ein Eingang
n
5 kann wie angegeben werdenDiese "5" bis zum Ende sollte in eine ungerade Zahl geändert werden. Geben Sie nicht mehr als 25 an, dann überschreibt sich das Programm von selbst.
So probieren Sie es aus: googeln Sie nach "Vice C64 Emulator", installieren Sie es und kopieren Sie diesen Basiscode. Geben Sie zum Starten des Programms Folgendes ein :
RUN
. Drücken Sie Umschalt / Home, um den Bildschirm zu löschen.Und das Ergebnis:
quelle
FOR
ist tokenzied alsfO
. OderGOTO
alsgO
. Ich hätte es auch interaktiv machen können, aber leider ist derINPUT
Befehl eine Ausnahme, er hat kein Token. Aus diesem Grund sollte die Eingabe mit einemDATA
Befehl erfolgen, dessen Token istdA
.Python 3 ,
214236240 BytesProbieren Sie es online aus!
Die Vielzahl jedes Zeichens wird als Summe der Zweierpotenzen ausgedrückt, z
12 = 8 + 4 => "E"*12 = "E"*2*2*2 + "E"*2*2
.((i-n//2)%3+(j-n//2)%3<1)*(i*j>0)*(i<n-1)*(j<n-1)
kann wahrscheinlich golfen.quelle
i<n
war immer wahr, auch wenni=n-1
(unten). Gleiches gilt fürj
.