Herausforderung
Wiederholen Sie bei einer positiven ganzen Zahl jede ihrer Ziffern oft, wie es ihrer Position in . Mit anderen Worten, jede Ziffer sollte mal wiederholt werden (für jede , 1-indiziert), wodurch die neue Zahl erzeugt wird:d 1 , d 2 , d 3 , ⋯ , d n N d k k 1 ≤ k ≤ n
Schreiben Sie es dann horizontal und vertikal auf und füllen Sie die Lücken mit Kopien der Ziffer, die dem größeren Index zwischen dem Spaltenindex und dem Zeilenindex des Leerzeichens entspricht. Die endgültige Ausgabe sollte folgendermaßen aussehen:
Technische Daten
Sie können als Ganzzahl, als Zeichenfolge, als Ziffernliste oder als die Ziffern darstellende Zeichenliste verwenden. Die Ausgabe kann eine durch Zeilenumbrüche getrennte Zeichenfolge, eine Liste von Zeichenfolgen / Ganzzahlen oder eine Liste von Listen von Zeichen / Ziffern sein. Geben Sie jedoch nach Möglichkeit auch eine hübsche Druckversion an. Wenn es sich bei der Ausgabe um eine durch Zeilenumbrüche getrennte Zeichenfolge handelt, ist Folgendes zulässig:
- führende / nachfolgende Leerzeichen haben, solange sich das Erscheinungsbild der Ausgabe nicht ändert
- Trennen Sie die Spalten durch konsistente Leerzeichen oder die Zeilen durch eine konsistente Anzahl von Zeilenumbrüchen (ungleich Null)
Sie können Eingaben und Ausgaben mit jeder Standardmethode vornehmen , wobei zu beachten ist, dass diese Lücken standardmäßig verboten sind. Das ist Code-Golf , also versuchen Sie, die Aufgabe in den wenigsten Bytes zu erledigen, die Sie in der Sprache Ihrer Wahl verwalten können.
Testfälle
65:
655
555
555
---------------
203:
200333
000333
000333
333333
333333
333333
--------------
233:
233333
333333
333333
333333
333333
333333
---------------
5202:
5220002222
2220002222
2220002222
0000002222
0000002222
0000002222
2222222222
2222222222
2222222222
2222222222
---------------
12345:
122333444455555
222333444455555
222333444455555
333333444455555
333333444455555
333333444455555
444444444455555
444444444455555
444444444455555
444444444455555
555555555555555
555555555555555
555555555555555
555555555555555
555555555555555
Antworten:
JavaScript (ES7), 70 Byte
Übernimmt die Eingabe als Zeichenfolge. Gibt eine Zeichenfolge mit einem nachfolgenden Zeilenumbruch zurück.
Probieren Sie es online!
Wie?
Methode
Wir bauen die Ausgabe zeichenweise auf, indem wir durch eine quadratische Matrix gehen und jede Zelle in einen Index in die Eingabezeichenfolge umwandeln .ichx , y
Koordinaten zum Zeichenkettenindex
Die obere Grenze der n t h digit Bereich (0-indizierte) entlang jeder Achse ist gegeben durch A000096 :un nt h
u0=0,u1=2,u2=5,u3=9,u4=14,u5=20,…
Wenn eine ganze Zahl , können wir herausfinden, in welchem Bereich n = ⌋ x ⌋ + 1 sie liegt, indem wir lösen:k n = ⌊ x ⌋ + 1
Führen zu:
n=⌊ √
Für jede Zelle definieren wir:( x , y)
Diese Werte werden in Indizes i x , y in die Eingabezeichenfolge umgewandelt, indem Folgendes ausgeführt wird:vx , y ichx , y
Haltebedingungen
Wir wissen, dass wir erreicht haben:
die rechte Grenze der Matrix, wenn das Zeichen bei nicht existiert und wir x > y habenichx , y x > y
die untere Grenze der Matrix, wenn das Zeichen nicht existiert und wirx ≤ y
quelle
J ,
16-15Bytes-1 Byte dank FrownyFrog!
Probieren Sie es online!
Nimmt
N
als Zeichenfolge.Erklärung der Ausgangslösung:
Testsitzung mit Eingabe
203
:quelle
)
ist Ihre APL-Antwort die gleiche wie die, die mir gehört hätte.[:<:@
scheint ziemlich teuer zu sein. Könnten Sie der Liste, in die Sie indizieren, stattdessen etwas voranstellen, um die 1-Indizierung zu berücksichtigen (z. B. eine 0 voranstellen, um jedes erforderliche Element um eine Position nach rechts zu verschieben)?{⍵[∘.⌈⍨(/⍨)⍳⍴⍵]}
?Haskell ,
605958 BytesProbieren Sie es online!
Punktfreie Version (68 Bytes)
Probieren Sie es online!
quelle
Python 2 , 71 Bytes
Probieren Sie es online!
Erzeugt zuerst die erste Zeile
r
und iteriert dannr
, um jede Zeile zu drucken.quelle
R , 59 Bytes
Probieren Sie es online!
quelle
a
als Vektor Zeichen nehmen, so dass Sieg=seq(a)
direkt einstellen können.Gelee , 7 Bytes
Probieren Sie es online!
Ausgabe geklärt.
quelle
05AB1E ,
141110 BytesDank Magic Octopus Urn / Adnan 1 Byte gespeichert
Probieren Sie es online!
Erläuterung
quelle
APL (Dyalog Classic) , 16 Byte
Ich trenne diese Lösung mit meiner Antwort von der Post, wie von Jo King vorgeschlagen
Probieren Sie es online!
quelle
Python 2 , 74 Bytes
Probieren Sie es online!
quelle
Excel VBA, 95 Bytes
Eine anonyme VBE-Direktfensterfunktion, die Eingaben von
[A1]
und Ausgaben an die Konsole entgegennimmtUngolfed und kommentiert
quelle
MATL ,
1512 BytesProbieren Sie es online!
Ich vermute, das kann gekürzt werden, aber es ist nicht so schlimm ...
quelle
Add ++ , 35 Bytes
Probieren Sie es online!
Wie es funktioniert
Wir nehmen Eingaben als eine Liste von Ziffern, während verhindert wird, dass wir a) in Ziffern umwandeln
BD
müssen und auch die Ziffern speichern müssen, die zwei Bytes benötigen würden.bLR
dBcB]
£X
¦Ω+
Als nächstes duplizieren wir dieses Array und tabellieren es nach Maximum
d‽b>
. Das heißt, jedes Element im Array wird mit jedem anderen Element aus dem zweiten Array gepaart, und der Befehl dyadic maximum wird über das Paar ausgeführt. Bei einer Beispieleingabe von [6 5] wird das Array [1 2 2 2 2 2 2 2 2] , das eine abgeflachte Version des Mosaiks ist, als Index für das Array erstellt. Leider hinzufügen ++ verwendet 0-indizierte Arrays, so dass wir jedes Element verringern müssen:1€Ω_
.A
€Ω:
AbLR¦+
T
$
T
quelle
Kohle , 17 Bytes
Probieren Sie es online! Erläuterung:
Durchlaufen Sie die Indizes der Zeichen in umgekehrter Reihenfolge.
Berechnen Sie die Größe des Quadrats.
Zeichnen Sie das Quadrat mit dem aktuellen Zeichen.
quelle
Canvas , 12 Bytes
Probieren Sie es hier aus!
quelle
Python 2 ,
7673 Bytes-3 Bytes dank Lynn .
Probieren Sie es online!
quelle
Holzkohle , 14 Bytes
Probieren Sie es online!
Wie?
... kann man mit dieser Methode Golf spielen?
quelle
×⊕κι
zweimal.ι
undκ
bei jeder Iteration der Each-Schleife ändern.Stax , 12 Bytes
Führen Sie es aus und debuggen Sie es
Mit diesem Algorithmus .
Erläuterung:
Stax ,
20191816 BytesFühren Sie es aus und debuggen Sie es
Erläuterung:
quelle
Attache , 34 Bytes
Probieren Sie es online!
Erläuterung
Funktioniert ähnlich wie Galen Ivanovs J-Antwort .
quelle
K (ngn / k) , 16 Bytes
Probieren Sie es online!
quelle
C (gcc) 130 Bytes
Wer braucht ausgefallene Mathematik, wenn man bruteforce kann?
Probieren Sie es online!
quelle
QBasic 1.1 , 127 Bytes
-4 dank DLosc .
Verwendet eine modifizierte Version des Python 2-Algorithmus von xnor .
Die Eingabe ist eine Zeichenfolge ohne Anführungszeichen. Die Ausgabe wird
\n
ohne zusätzliche Leerzeichen oder\n
s getrennt.quelle
QBasic , 111 Bytes
Eine anonyme Funktion, die zur Eingabe und Ausgabe an die Konsole auffordert.
quelle
Php 7.1 , 163 Bytes
Über die CLI, die die Nummer als Argument angibt:
Nicht so gut gespielt:
Ausgabe:
Methode:
Bauen Sie im Allgemeinen mehrdimensionale Array-Quadrate auf, die aus der Ziffer bestehen, und überlagern Sie sie dann alle (array_replace_recursive).
(Ja, ich weiß, das ist peinlich lang.)
quelle
Ruby , 80 Bytes
Probieren Sie es online!
Ähnlich wie Ovs Antwort
quelle
Japt, 12 Bytes
Nimmt Eingaben als Zeichenfolge und gibt ein Array von Zeichenfolgen aus.
Versuch es
Erläuterung
quelle
UBASIC , 120 Byte
Eine anonyme Funktion, die die Eingabe von foprm STDIN und die Ausgabe an STDOUT übernimmt
Probieren Sie es online!
quelle
Visual Basic .NET (VBC) , 198 Byte
Eine
Sub
Routine, die Eingaben von STDIN entgegennimmt und an STDOUT ausgibt.StrDup konnte nicht zum Laufen gebracht werden: /
Probieren Sie es online!
quelle
Lua,
149-140BytesFunktion, die eine Liste von Ziffernfolgen akzeptiert und das Ergebnis auf stdout ausgibt. Dies ist mein erster Versuch, Code Golf zu spielen (und die Sprachauswahl hilft auch nicht).
Probieren Sie es online!
Ungolfed:
quelle
Perl 5+
-nalF -M5.010
, 67 BytesProbieren Sie es online!
quelle
Yabasic , 108 Bytes
Eine anonyme Funktion, die Eingaben von STDIN akzeptiert und an STDOUT ausgibt
Probieren Sie es online!
quelle