Die Aufgabe besteht darin, alle Zeichenfolgen von 'a' bis '999' einschließlich Großbuchstaben wie folgt zu generieren:
'a', 'b', 'c' ... 'y', 'z', 'A', 'B', 'C' ... 'Y', 'Z', '0', '1', 2' ...
'8', '9', 'aa', 'ab', 'ac' ... 'az', 'aA', 'aB' ... 'aZ', 'a0' ... 'a9', 'ba'
und so weiter (Ausfüllen der Lücken), optional beginnend mit der leeren Zeichenkette.
Eingang:
- Die Anzahl aufeinanderfolgender Zeichen, bis zu der das Programm drucken muss.
Ausgabe:
- Ein Array, das jede Zeichenfolge ODER eine Zeichenfolge pro Zeile enthält
Klarstellungen:
Die Reihenfolge spielt keine Rolle, Sie können zuerst Groß- oder Kleinbuchstaben drucken, wenn Sie möchten.
Die Ausgabe kann jede Art von Aufzählung zurückgeben, muss nicht unbedingt ein Array sein, obwohl ich bezweifle, dass das Drucken aller Kombinationen nicht der einfachste Weg ist.
Eine Eingabe von
3
würde den gesamten String von'a'
(oder''
) bis'999'
‚eine Eingabe von5
bis zu'99999'
und so weiter ausgeben.
code-golf
string
number
array-manipulation
Simon Landry
quelle
quelle
a = (function return)
.a
zu9999
, bei Eingabe 5a
zu99999
und so weiter.Antworten:
Gelee , 7 Bytes
Dies ist eine monadische Verknüpfung, die eine Ganzzahl als Eingabe akzeptiert und ein Array von Zeichenfolgen zurückgibt.
Probieren Sie es online!
Wie es funktioniert
quelle
Haskell, 65 Bytes
Anwendungsbeispiel:
k 3
->["a","b","c",....,"997","998","999"]
.Wie es funktioniert
quelle
Python, 86 Bytes
Gibt eine Liste nicht leerer Zeichenfolgen aus. Stellt jedem Ausgang für eine
n-1
leere Zeichenfolge rekursiv ein alphanumerisches Zeichen voran .quelle
JavaScript (Firefox 30-57), 108 Byte
3 Bytes mit toUpperCase gespeichert. Für die Berechnung der 62 Zeichen benötige ich zusätzliche 10 Byte.
quelle
f=
am Anfang vergessen . (Ich vergesse immer, das für rekursive Antworten zu tun.)f=
, alle weiteren Probleme liegen an der Art und Weise, wie Sie es nennen wollen.Zimtgummi, 15 Bytes
Nicht kurz genug, obwohl dies genau die Herausforderung ist, für die Cinnamon Gum gemacht wurde :(
Komprimiert durch Konvertieren von der bijektiven Basis 96 zur Basis 256. Probieren Sie es online aus. Eingänge größer als 2 verursachen Probleme beim TIO.
Erläuterung
Dies dekomprimiert zum regulären Ausdruck
[a-zA-Z0-9]{1,%s}
. Derh
Modus ersetzt dann die Eingabe in%s
und gibt alle Zeichenfolgen aus, die dem regulären Ausdruck entsprechen.quelle
Ruby, 82 Bytes
Konstruiert kartesische Produkte des Zeichensatzes bis zur angegebenen Länge. Der Zeichensatz wird durch Erfassen aller Zeichen zwischen
0
undz
und Herausfiltern von Nicht-Wort-Zeichen sowie erstellt_
.quelle
05AB1E ,
98 BytesCode:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
Python 2.7,
136134 BytesVielen Dank an Maltysen und NonlinearFruit für die Einsparung von 2 Bytes
Nimmt
ascii_letters
unddigits
aus dem String-Modul und verwendet das kartesische Produkt alsproduct
aus itertools, um alle Kombinationen zu berechnen.Ausgabe
quelle
i in range(n)
mitrepeat=i+1
range
Funktion eingebaut ?Pyth -
1312 BytesDank @Jakube 1 Byte gespart.
Probieren Sie es hier online aus .
quelle
rBG1
Speichern Sie ein Byte mehr als+GrG1
B
funktioniert ifurcate mit Argumenten? Vielen Dank.Python 2,
10697 BytesProbieren Sie es auf Ideone .
quelle
MATL , 12 Bytes
Dies nimmt eine Zahl als Eingabe.
Probieren Sie es online!
Erläuterung
quelle
𝔼𝕊𝕄𝕚𝕟 21 Zeichen / 27 Bytes
Try it here (Firefox only).
Nee. Nee. Nee.
Erläuterung
quelle
Perl, 113 Bytes + Leerzeichen
Verwenden Sie oben "perl -E" mit einem Argument, das eine Zahl ist. Ich hätte die letzte "Karte sagen" in der Anzahl der Zeichen wohl anständig nicht zählen können.
quelle
J, 50 Bytes
Die Hälfte der Bytes, genauer gesagt 25, wird für die Generierung der benötigten Buchstaben und Ziffern aufgewendet.
quelle
APL,
3837 Bytesquelle
(⎕ucs 96+⍳26),⎕d
=>⎕d,⍨⎕ucs 96+⍳26
Bash + GNU-Dienstprogramme, 90
Eingabe als Befehlszeilenparameter. Die Ausgabe ist eine durch Leerzeichen getrennte Liste.
Funktioniert für Eingaben bis einschließlich 3. Bei 4 ist der Speicher voll - es werden
eval printf
die gesamten 63 n Elemente der Bash-Erweiterung benötigt.quelle
Bash + GNU-Utils, 66
Anderer (und meiner Meinung nach etwas neuer) Ansatz für meine andere Antwort :
dc
zählt von 2 48 -1 auf 2 48 -64 nP
herunter und druckt jede resultierende Zahl als Nebenstrom (dh Basis 256). Wenn die Eingabe zwischen 1 und einschließlich 4 liegt, sind dies garantiert genau 6 Bytes pro Zahl.base64
konvertiert dies in eine Base64-Ausgabe und somit 8 Bytes pro Base64-Ziffer, eine pro Zeile.sed
Entfernt das führende/
Zeichen (base64 Ziffer 63) und alle Zeilen, die+
oder enthalten/
(base64 Ziffern 62 und 63). Damit bleibt die gewünschte Reihenfolge erhalten.quelle
R , 73 Bytes
y
Beginnt als leere Zeichenfolgex
als Basisfall'a','b','c',...,'8','9'
.outer
Nimmt jedes seiner Eingabeargumente und wendet die Funktionpaste0
auf jede Kombination von Elementen iny
und an,x
die die Zeichenfolgen verketten.y
Speichert das Ergebnis,cat
druckt es aus und durchläuft dabei die STDIN-Anzahl.Probieren Sie es online!
quelle
Jq 1,5 , 97 Bytes
Erweitert
Probieren Sie es online!
quelle