Im Gespräch über diese Frage , werfen Sie einen Blick darauf, wenn Sie ein bisschen verwirrt sind.
Hauptaufgabe
Ihre Aufgabe ist es, verkettete Ganzzahlen in absteigender Reihenfolge auszugeben, aber die maximale Ganzzahl bei jedem Treffer zu erhöhen 1
(für diese Frage wird 1 als Primzahl betrachtet) . Dies hört sich zwar nicht anders an als die erste Frage, aber hier kommt der schwierige Teil: Alle ausgegebenen Zahlen dürfen nur Primzahlen sein . Diese werden ohne Leerzeichen oder Zeilenumbrüche zu einer einzigen Zeichenfolge zusammengefügt. Ihre Eingabe wird auch eine Primzahl sein .
Beispiel:
1
21
321
5321
75321
1175321
Valid output:
1213215321753211175321
Eingang
Ihr Code kann nur eine Eingabe annehmen: die höchste zu druckende Primzahl. Diese Eingabe kann von überall kommen (grafisch, STDIN). Sie können sicher sein, dass die Eingabe eine Primzahl ist.
Ausgabe
Sie müssen die resultierende Nummer ausgeben. Sie können diese Zahl erhalten, indem Sie den Countdown fortsetzen. Zählen Sie die Zahl nur, wenn es sich um eine Primzahl handelt, und verbinden Sie dann alle Ergebnisse zu einer Zahl. Die letzte Zahl "row" (zB 7, 5, 3, 2, 1
) muss vollständig ausgedruckt werden. Die Ausgabe kann beliebig sein (Zahlen, Zeichenfolgen, Grafiken), solange sie lesbar ist. Es gilt dasselbe Regex-Muster für die Überprüfung Ihrer Testfälle:
^(\D*(\d)+\D*|)$
Wenn Ihre Ausgabe nicht mit diesem Muster übereinstimmt, ist Ihr Code ungültig.
Regeln
- Die Eingabe wird als primitiv eingestuft. Schließen Sie die Fehlerbehandlung nicht ein, es sei denn, Sie möchten / müssen.
- Die Ausgabe kann nur eine vollständig verbundene Nummer sein und wird daher nicht durch irgendetwas aufgeteilt, auch nicht durch Zeilenumbrüche.
- Ihr Algorithmus sollte nicht auf die erste Instanz des
N
Auftretens prüfen (z. B. den17
Eingang1175321
), sondern auf die erste Instanz vonN
als tatsächliche Zahl. - Ihre Eingabe ist positiv, fügen Sie keine Bearbeitung hinzu, es sei denn, Sie möchten / müssen.
Testfälle
Input: -2, 0
Output: Any, or none (number isn't positive)
Input: 9
Output: Any, or none (number isn't prime)
Input: 1
Output: 1
Input: 7
Output: 121321532175321
Input: 23
Output: 1213215321753211175321131175321171311753211917131175321231917131175321
Gewinner
Das ist Code-Golf , also gewinnt der Autor des Codes mit der geringsten Länge in Bytes!
1
per Definition eine Primzahl ist.1
widerspricht direkt der Spezifikation, die " sicherstellt ", dass die eingegebene Zahl eine Primzahl ist. 2. Die Ausgabespezifikation scheint mehrere Widersprüche und Mehrdeutigkeiten zu enthalten. " Die letzte Zahl" row "(zB 7, 5, 3, 2, 1) muss vollständig gedruckt werden " - also die anderen nicht? " Es gilt dasselbe Regex-Muster für die Prüfung Ihrer Testfälle ", aber " Die Ausgabe ist möglicherweise nur eine vollständig verbundene Zahl, daher nicht durch irgendetwas aufgeteilt " widerspricht diesem regulären Ausdruck. Aber der reguläre Ausdruck ist ohnehin eindeutig zweifelhaft, weil er die leere Zeichenfolge zulässt, und es gibt keine Eingabe, die dies bewirken könnte.Antworten:
Gelee , 9 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
V
auf einer Liste.)Verarbeitung, 161 Bytes
Eine Funktion führt die Primalitätsprüfung durch, die andere den Druck. Nennen Sie es durch
t(7)
Ungolfed
Die erste Funktion führt die Primalitätsprüfung durch. Es wird eine
int
statt einer zurückgegeben,boolean
da auf diese Weise mehr Bytes gespeichert werden. (int
stattboolean
,0
stattfalse
,1
statttrue
)Die zweite Funktion druckt den String aus. Es durchläuft jede Zahl. Wenn es keine Primzahl ist, fahren Sie mit der nächsten Iteration fort. Wenn es eine Primzahl ist, fährt es mit dem Drucken in einer anderen
for
Schleife fort. Wiederum, wenn die Zahl eine Primzahl ist, drucken wir sie aus, andernfalls nicht.quelle
Gelee , 12 Bytes
Probieren Sie es online!
Wenn es nicht für
1
s gewesen wäre, wäre mein Code nurÆRÆRUVV
für 7 Bytes gewesen.Erweiterte Erklärung:
Der Ire (genannt Dennis?) Hat mich irgendwie überrannt , lol.
quelle
05AB1E , 19 Bytes
Probieren Sie es online!
Erläuterung
quelle
DpÏ
Aussage. Gute Arbeit!Brachylog , 17 Bytes
Probieren Sie es online!
Kann nicht kürzer scheinen als das ...
Erläuterung
quelle
GameMaker-Sprache, 169 Byte
Hauptfunktion (68 Bytes)
Funktion p (46 Bytes)
Funktion q (55 Bytes)
quelle
MATL , 15 Bytes
Probieren Sie es online!
quelle
Perl 6 , 41 Bytes
( Probieren Sie es online. )
Erläuterung:
1, |grep(*.is-prime, 2..$_)
: Folge von 1 und Primzahlen ...(1 2 3 5)
[,] ...
: Verkleinern ("Falten") über Kommaoperator ...(1 2 3 5)
[\,] ...
: Mit Zwischenergebnissen ( dreieckig reduzieren ) ...((1) (1 2) (1 2 3) (1 2 3 5))
[\R,] ...
: Wende den umgekehrten Meta-Operator auf das Komma an ...((1) (2 1) (3 2 1) (5 3 2 1))
[~] flat ...
: Listenverschachtelung entfernen und String-Concat-Operator umklappen ...1213215321
(Dies basiert auf meiner Antwort für die vorherige Herausforderung .)
quelle
Mathematica, 61 Bytes
Unbenannte Funktion, die ein ganzzahliges Argument verwendet und eine Zeichenfolge zurückgibt. (Wenn es sich bei der Eingabe nicht um eine Primzahl handelt, wird sie nur auf die nächste Primzahl "abgerundet". Wenn die Eingabe nicht positiv ist, gibt sie vor, dass sie 1 ist.)
Diese Implementierung verwendet den bösen Trick aus Martin Enders Antwort auf die ähnliche vorherige Herausforderung (wer sagt, dass dieser alte Hund keine neuen Tricks lernen kann?): Missbrauch
<>
, um eine verschachtelte Liste von ganzen Zahlen zu reduzieren.Die betreffende verschachtelte Liste erstellt zunächst eine ähnliche verschachtelte Liste wie in dieser Antwort mit der entsprechenden Länge (angegeben durch
PrimePi@#
die Anzahl der Primzahlen bis einschließlich der Eingabe). dannPrime
wird auf jedes Element angewendet. Für die Eingabe, bei5
der es sich um die 3. Primzahl handelt,Range[Range@PrimePi@#,0,-1]
ergibt der Code{{1,0},{2,1,0},{3,2,1,0}}
, undPrime
für jedes Element ergibt sich,{{2,Prime[0]},{3,2,Prime[0]},{5,3,2,Prime[0]}}
da die 1., 2. und 3. Primzahl 2, 3 bzw. 5 sind. Ich bin stolz darauf, dass es mir gelungen ist, Martin Enders Ansatz noch mehr Fehler hinzuzufügen - Mathematica beklagt sich jedes Mal, wenn er schreibtPrime[0]
.Prime[0]
ist keine sache, aber das ist okay:/.Prime@0->1
macht sie alle zu1
s. Und wir wollen auch eine1
an der Front, also ersetzen wir die""
die Antwort von Martin Ender durch einfaches1
, was tatsächlich ein Byte spart.quelle
PHP, 72 Bytes
Lauf mit
-r
Nervenzusammenbruch
quelle
Pyth - 12 Bytes
Test Suite .
quelle