Eine dämonische Zahl ist eine positive Ganzzahl, deren Dezimaldarstellung nur aus 6 besteht. Die Liste der dämonischen Zahlen beginnt mit 6, 66, 666, 6666.
Geben Sie bei einer positiven Ganzzahl die nächste dämonische Zahl aus. Wenn zwei vorhanden sind, geben Sie den größeren aus.
Testfälle:
n output
1 6
2 6
3 6
6 6
35 6
36 66
37 66
100 66
365 66
366 666
666 666
999 666
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt.
code-golf
number
arithmetic
Undichte Nonne
quelle
quelle
Antworten:
Python 2, 28 Bytes
quelle
x=>'6'.repeat((''+-~(x*3/11)).length)
3.6666... = 11/3
.JavaScript (ES6),
3129 BytesCode-Snippet anzeigen
„Deshalb freue ich mich über Schwächen […] Denn wenn ich schwach bin, bin ich stark.“
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
Java 7,
969366 BytesHafen von @orlp erstaunliche Python 2 Antwort .
Probieren Sie es hier aus.
Ich denke, meine 66- Byte-Zahl ist auch ein Dämon. ;)
(Nicht die kürzeste Java-Antwort übrigens, siehe stattdessen die Antwort von @JollyJoker .
quelle
"6"
hätte sein sollen""
.Gelee , 9 Bytes
Eine monadische Verbindung.
Probieren Sie es online! - Fast kein Punkt in diesem Link (siehe unten)!
Wie?
Im Stil eines echten Golfspielers ist dies wirklich ineffizient - es ist die 60er-Jahre-Pause bei TIO für den 365- Testfall! Vor Ort endet dies in 37s.
Ein Patch, mit dem derselbe Algorithmus für 365 und 366 auf TIO innerhalb der 60er-Grenze ausgeführt werden kann , soll die implizite Vektorisierung von
Ḍ
withẆa6Ḍ€ạÐṂ⁸Ṫ
( versuchen Sie das ) vermeiden. Dies wird jedoch jetzt bei einer Eingabe von 999 ( Triangle (999) nur fehlschlagen 499.500, aber jedes ist eine Liste von Ganzzahlen, was insgesamt Tetraeder (999) = 166.666.500 Ganzzahlen ergibt (nicht speichereffizient, zumindest in Python).quelle
Gelee , 10 Bytes
Probieren Sie es online!
quelle
‘×3:11Ṿ”6ṁ
für die String-Ausgabe,‘×3:11D6ṁḌ
für Integer.C 118 Bytes
Versuchen Sie es online
quelle
JavaScript (ES6), 41 Byte
Testfälle
Code-Snippet anzeigen
quelle
Mathematica, 36 Bytes
Reine Funktion:
Erläuterung:
Iterativ erstellen Sie eine Liste mit einer Länge, die der Eingabe entspricht.
NestList
Folgen Sie dabei dem Muster,6+10x(previous_value)
beginnend mit dem Wert von6
.Suchen Sie dann in dieser Liste den Wert, der der Eingabe am nächsten liegt.
Zuletzt den Maximalwert aus der Liste der nächstgelegenen Werte entnehmen.
Während die Listenlänge sehr ineffizient ist, da Mathematica mit beliebig genauen Längenangaben arbeiten kann, ist dieses Programm nur durch den physischen Speicher begrenzt.
quelle
Als schädlich eingestufte Vorlagen , 118 Byte
Probieren Sie es online!
Ungolfed:
quelle
05AB1E ,
109 Bytes- 1 Byte danke an Riley
Probieren Sie es online!
Der obige Code kann Leistungsprobleme verursachen. Hier ist eine etwas effizientere Version mit 10 Bytes: TIO-Alternative
Erläuterung
quelle
Mathematica, 76 Bytes
quelle
Neim ,
1210 Bytes (nicht konkurrierend)-1 Byte dank steenbergh
Erläuterung:
Unglücklicherweise,
𝕔
wird der niedrigere Wert in einer Liste zurückgegeben, wenn zwei Zahlen den gleichen Unterschied aufweisen, sodass wir 2 Bytes hinzufügen mussten, um dies zu berücksichtigen.Nichtkonkurrierende wie
>
,<
undℝ
wurden hinzugefügt , nachdem diese Frage gestellt wurde (und𝐥
wurde an der Arbeit mit Zahlen festgelegt, nicht nur Listen)Hinweis: Funktioniert nicht für Zahlen mit einer Länge von 19 oder mehr, da sie für Javas Longs zu groß werden. (aber das ist ein ziemlich großer Wert und sollte in Ordnung sein)
Versuch es
quelle
Γ6Θℝ)
mitΓΘ𝐈Γ6)𝐣)
?Java 8, 37 Bytes
Nach dem Beispiel von Kevin Cruijssen und einfach einen String zurückgeben.
Führen Sie den * 3/11-Trick aus, um die richtige Länge zu erhalten, und ersetzen Sie dann alle durch Sechser.
quelle
-~
ich das hinzufügen , was ich zehnmal auf dieser Seite hätte sehen sollen, wenn ichQBIC ,
3727 BytesAnstatt Maths ™ zu verwenden, wird jetzt die Zeichenfolge bearbeitet, um die Unterbrechungen in den dämonischen Domänen (36, 366, ...) zu finden. Inspiriert von der JS-Antwort von @ eush77.
Erläuterung
quelle
Gleichstrom , 46 Bytes
Probieren Sie es online!
quelle
142 Bytes
Es nutzt die Tatsache, dass wir alle 36666 zur nächsten deamonischen Zahl springen müssen ... In einer besser lesbaren Form:
quelle
Braingasmus , 15 Bytes
Verwenden der Arithmetik aus der Python-Lösung von orlp :
quelle
Ich habe diese Frage im Feed nicht gesehen und bin nur zufällig darüber gestolpert. Hier ist trotzdem meine Antwort:
JavaScript (ES6), 34 Byte
Addiere 1 Byte für eine numerische Antwort. Ursprünglich basiert auf dieser ungolfed ES7-Antwort (37 Bytes, bereits numerisch):
Ärgerlicherweise möchte OP, dass 36 näher an 66 als 6 liegt. Erläuterung: 11/3 = 3.666 ..., also teilt man die Bereiche 7..36, 37..366 usw. durch diese auf die Bereiche 1..9.9, 10 ..99.9 usw. Dies kann rein numerisch gelöst werden, indem 2/3 einer weniger als die nächsthöhere Potenz von 10 genommen werden. Es ist jedoch Golfspieler, zu kürzen, in eine Zeichenfolge umzuwandeln und dann alle Zeichen in die Ziffer 6 zu ändern nicht so golfen wie diese wirklich kluge rekursive Antwort.)
quelle
CJam, 25 Bytes
Nicht so langsam wie Jonathan Alans Jelly-Einreichung, erfordert jedoch O (n²) -Speicher, wobei n die eingegebene Zahl ist. Ja.
Dies entspricht dem folgenden Python:
Alternative Lösung, 12 Bytes
Dies ist eine Übersetzung des Algorithmus von orlp in CJam.
Erläuterung:
quelle
PHP, 49 Bytes
beschneide das Zeichen 6
Probieren Sie es online!
Statt
trim($x=$argn+$i,6)>""
Sie eine Regex - Lösung verwenden können!preg_match("#^6+$#",$x=$argn+$i)
gleich +11 Bytes oder eine Stringlänge zählen6
Vergleichstrlen($x=$argn+$i)-strspn($x,6)
10 Bytesquelle
LOLCODE 1.4, 471 Bytes
Beeindruckend. Hier ist das Ungolfed und erklärt:
Immer noch wow. Hier ist etwas Pseudojavascrython für dich.
Verstehst du es immer noch nicht? Dieses Programm vergleicht im Grunde genommen nur (mit Ausnahme der Eingänge 1-3) den Eingang mit 3,6 * 10 ^ n, wobei n die Länge des Eingangs ist. Wenn es kleiner als diese Zahl ist, gibt es die Zahl von 6s eins weniger als die Länge aus. Wenn es größer oder gleich dieser Zahl ist, ist die Anzahl der Sechser die aktuelle Länge.
Würde gerne etwas beim Golfen helfen!
quelle
Haxe, 70 Bytes
Die Eingabe muss als Typ übergeben werden,
Float
obwohl es sich um eine Ganzzahl handelt. Andernfalls beschwert sich Haxe über den Versuch, eine Ganzzahl zu teilen (ja, Haxe lehnt die Kompilierung ab, wenn Sie eine Ganzzahl durch etwas teilen).Gleich wie alle anderen Antworten. Mit 3 multiplizieren, durch 11 teilen,
6
für jede Ziffer 1 ausgeben.quelle
Brainfuck, 315 Bytes
Führen Sie es hier aus . Wählen Sie eine Zellengröße aus, die Werte von 3 * (n + 1) verarbeiten kann. Wählen Sie daher 16 aus, damit alle Testfälle funktionieren. Dynamischer (unendlicher) Speicher muss aktiviert sein, damit dies funktioniert. Dadurch kann das Band nach links erweitert werden. Um eine Ganzzahl einzugeben, geben Sie die Eingabe wie folgt ein
\366
für n = 366 ein.Ungolfed:
Verwendet den gleichen Algorithmus wie diese Lösung . Die für jeden einzelnen Schritt verwendeten Algorithmen werden von dieser Seite übernommen . Alle verwendeten Algorithmen sind nicht umbrochen, sodass das Programm bei größeren Eingaben nicht unterbrochen wird.
quelle
n=n*3
kann doch sowas wie golfen[->+++<]
? Und der Divmod-Algorithmus durch 10 teilen?05AB1E , 7 Bytes
Probieren Sie es online!
quelle
Japt , 9 Bytes
Versuch es
quelle
C #, 102 Bytes
Ein bisschen enttäuscht von der Länge, könnte genau das Gleiche tun wie die kürzere Antwort in Java, aber ich habe es nicht wirklich verstanden, weil ich ein fauler, dummer .NET-Entwickler bin :)
quelle