Herausforderung
Wir nehmen drei positive ganze Zahlen sind a
, b
und c
als Eingabe. Erstellen Sie mit diesen Ganzzahlen zunächst eine Sequenz im Bereich [0, c]
(einschließlich an beiden Enden) in Schritten von b
. Zum Beispiel a=4, b=2, c=100
wäre die Sequenz [0,2,4,...,96,98,100]
.
a
Ersetzen Sie für jede Zahl in dieser Sequenz, die durch teilbar ist, diese durch den nächsten Buchstaben im Kleinbuchstaben, beginnend mit dem Buchstaben 'a' und umlaufend zu 'a', nachdem Sie 'z' erreicht haben.
Beispiel:
Eingabe: a=4, b=2, c=100
Ausgabe:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Herausforderungsregeln:
- Sie können davon ausgehen, dass
a
,b
undc
nur positive ganze Zahlen sind, wob ≤ a ≤ c
. - Sie können davon ausgehen, dass
a
es sich um ein Vielfaches von handeltb
. - Sie können davon ausgehen,
c
ist teilbar durchb
. - Die bevorzugte Ausgabe ist eine einzelne verkettete Zeichenfolge wie oben, aber eine Liste / ein Array ist ebenfalls akzeptabel.
Testfälle:
Input: a=4, b=2, c=100
Output:
a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Input: a=9, b=3, c=174
Output:
a36b1215c2124d3033e3942f4851g5760h6669i7578j8487k9396l102105m111114n120123o129132p138141q147150r156159s165168t174
Input: a=10, b=2, c=50
Output:
a2468b12141618c22242628d32343638e42444648f
Input: a=25, b=1, c=25
Output:
a123456789101112131415161718192021222324b
Input: a=6, b=6, c=48
Output:
abcdefghi
Input: a=6, b=3, c=48
Output: a3b9c15d21e27f33g39h45i
Input: a=2, b=1, c=100
Output: a1b3c5d7e9f11g13h15i17j19k21l23m25n27o29p31q33r35s37t39u41v43w45x47y49z51a53b55c57d59e61f63g65h67i69j71k73l75m77n79o81p83q85r87s89t91u93v95w97x99y
Ich würde wirklich gerne eine Antwort in PHP sehen , aber diese Herausforderung ist für jede Sprache offen. Dies ist Codegolf , daher sollte die Antwort so kurz wie möglich sein. Für Funktionen / Programme gelten Standardregeln, und Standardlücken sind verboten .
[codegolf]
es das häufigste ist, das ich empfehlen würde. Auch von JoKing erwähnt, wird es nicht empfohlen, es sprachspezifisch zu machen. Es ist am besten, es stattdessen für alle Sprachen zu öffnen. Geben Sie für die Herausforderung selbst etwas mehr an und fügen Sie einige weitere Testfälle hinzu. Anhand des Beispiels kann ich sehen, dass der Bereich ist[0,c]
, aber dies sollte klar sein, ohne das Beispiel zu betrachten.'z'
bis dreht'a'
. Könnten Sie bitte eine hinzufügen, die dies tut?Antworten:
PHP , 67 Bytes
Zunächst einmal vielen Dank, dass Sie eine so coole Herausforderung gepostet haben! Ich habe es wirklich genossen, es zu lösen :) Hier ist meine 67-Byte-Lösung:
Um es auszuführen:
Oder probieren Sie es online!
Hier ist die gleiche Lösung ohne Wolf und mit erklärenden Kommentaren:
Ich habe eine 60-Byte-Lösung erstellt, die sich jedoch nicht umgibt :(
Probieren Sie es online aus!
quelle
Japt , 15 Bytes
Testen Sie es online!
Erläuterung
quelle
c,a,b
.R ,
6563 BytesProbieren Sie es online aus!
2 Bytes dank JayCe gespart!
Gibt eine Liste von Zeichenfolgen zurück, da R Zahlen zu Zeichenfolgen zwingt. Ersetzen Sie zum Drucken einfach den nachgestellten
z
durchcat(z,sep="")
.quelle
l=
nicht erforderlich. TIOClojure,
847977 BytesGib Lisp ein bisschen Liebe
Probieren Sie es online aus!
(-7 Bytes dank @NikoNyrh!)
quelle
#(...)
und verwendenfn
, um die innere auszudrücken. Während Sie gerade dabei sind , können Sie ersetzenmap
mitfor
Konstrukt und speichern weitere 4 Bytes.%1
kann ersetzt werden durch%
;)Java 10,
9383 BytesProbieren Sie es hier online aus . Vielen Dank an Scrooble für das Golfen von 10 Bytes.
Ungolfed:
quelle
Perl 6 ,
6050 BytesProbier es aus
Probier es aus
quelle
->\a,\b,\c
: Verwenden Sie nur$^a
usw. Und eschr 97+$++%26
ist ziemlich viel kürzer als("a".."z")[$++%26]
. Schließlich können Sie die Verkettung weglassen, da die Herausforderung dies nicht erfordert. Das würde insgesamt 10 Bytes sparen und 50JavaScript (Node.js) , 62 Byte
Probieren Sie es online aus!
quelle
05AB1E ,
1715 Bytes-2 Bytes dank @MagicOctopusUrn .
Übernimmt die Eingabe in der Reihenfolge
bca
.Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
/ݹ*vyD³ÖiA¾è¼}?
ist 16, dupliziert nur dasy
anstatt zu verwendenë
, was?
ignoriert wird, wenn es ein Alphabet-Zeichen drückt. Funktioniert/ݹ*εD³ÖiA¾è¼}?
sogar für 15, da wir das Ausgabearray überschreiben, können Sie den aktuellen Gewinner binden> :).ë
.C (gcc) ,
7472 BytesProbieren Sie es online aus!
quelle
Python 2,
8070 BytesGibt eine Liste zurück, da das OP dies für akzeptabel erklärt hat.
Ganz anderer Ansatz als bei der anderen Python 2-Antwort .
Probieren Sie es online aus!
quelle
CJam , 23 Bytes
Probieren Sie es online aus!
Das Lesen der Eingabe als
b a c
und das Löschen der Eingabe@
wären 22 Byte (nicht sicher, ob dies gültig ist).quelle
Python 2 ,
6563 BytesGibt eine Liste zurück, da das OP dies für akzeptabel erklärt hat.
Probieren Sie es online aus!
Frühere Versionen, die während des kreativen Prozesses verwendet wurden (rückwärts arbeiten):
84 Bytes
Gibt einen Generatorausdruck zurück.
111 Bytes
Verwendet einen Generator für das Alphabet und gibt eine Liste zurück.
quelle
next
. Nett.PHP , 79 Bytes
Hinweis: Nicht so gut in PHP
Probieren Sie es online aus!
PHP , 84 Bytes
Dies ist genau der gleiche obige Code nur im Funktionsformat (da Sie eine PHP-Antwort wollten, ist dies vielleicht besser für Sie)
Probieren Sie es online aus!
quelle
Excel VBA, 76 Bytes
Nimmt Eingang
a
,b
undc
aus[A1]
,[B1]
und[C1]
jeweils dann ausgibt , auf die VBE Direktfenster.quelle
Python 2 , 83 Bytes
Probieren Sie es online aus!
quelle
Kotlin,
8079 Bytes-1 dank OOBalance !
Probieren Sie es online aus!
Mein erstes Mal Golf spielen (oder etwas anderes machen) in Kotlin! Kann wahrscheinlich verbessert werden.
Sehr ähnlich zu dieser Java-Antwort , wurde mir nach dem Schreiben klar. Sparen Sie auf dem
return
und verlieren Sie auf dem Ternär für fast die gleiche Punktzahl.quelle
else
.Python3 -
111,101,98, 94 BytesWahrscheinlich nicht die kürzeste, aber es gibt Raum für Verbesserungen
Probieren Sie es online aus!
quelle
next(q)if x%a==0else x for x in[y*b
Holzkohle , 22 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
quelle
Haskell ,
7169 BytesProbieren Sie es online aus!
Vorherige 71 Bytes:
Probieren Sie es online aus!
Erläuterung:
quelle
CJam ,
6463 Bytes ( autsch )Probieren Sie es online aus!
Erläuterung
Dies könnte definitiv verbessert werden, also zögern Sie nicht mitzumachen!
Änderungen
Helen hat ein Byte abgeschnitten!
Alt:
97:Y;riri:Bri\/1+,[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Neu:
97:Y;riri:Bri\/),[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Durch Ändern
1+
zu können)
wir ein Byte abschneiden.quelle
Gelee , 16 Bytes
Ein vollständiges Programm mit Argumenten,
c b a
das das Ergebnis druckt.Probieren Sie es online aus!
quelle
Clojure, 117 Bytes
Solch ein Imperativ. : /
quelle
C (gcc / clang),
80 bis68 BytesPort meiner Java- Antwort . Probieren Sie es hier online aus .
quelle
printf(L"搥挥"+!(i%a),i%a?i:i/a%26+97)
statti%a?printf("%d",i):putchar(i/a%26+97)
Gelee , 14 Bytes
Probieren Sie es online aus!
quelle
Python 2 und 3 -
123128 BytesSie müssen
f=
vor das stellenlambda
und es dann mit anrufen,f(a,b,c)
aber ich bin mir ziemlich sicher, dass das erlaubt ist.quelle
Ruby ,
59 5855 BytesProbieren Sie es online aus!
Gibt eine Liste zurück
quelle