Suchen Sie ausgehend von einer positiven ganzen Zahl N die kleinste ganze Zahl N ', die berechnet werden kann, indem Sie N wiederholt durch eine der Ziffern (in Basis 10) dividieren . Jede ausgewählte Ziffer muss ein Teiler von N größer als 1 sein .
Beispiel 1
Die erwartete Ausgabe für N = 230 ist N '= 23 :
Beispiel # 2
Die erwartete Ausgabe für N = 129528 ist N '= 257 :
Vorsicht vor nicht optimalen Wegen!
Wir könnten mit 129528/9 = 14392 beginnen , aber das würde nicht zum kleinstmöglichen Ergebnis führen. Das Beste, was wir tun können, wenn wir zuerst durch 9 dividieren, ist:
Regeln
- Die Eingabe kann in jedem vernünftigen Format erfolgen (Ganzzahl, Zeichenfolge, Ziffernfeld, ...).
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
Testfälle
1 --> 1
7 --> 1
10 --> 10
24 --> 1
230 --> 23
234 --> 78
10800 --> 1
10801 --> 10801
50976 --> 118
129500 --> 37
129528 --> 257
8377128 --> 38783
655294464 --> 1111
code-golf
integer
optimization
division
Arnauld
quelle
quelle
Antworten:
Haskell ,
6761 BytesProbieren Sie es online!
Erläuterung:
read.pure<$>show n
wandelt die eingegebene Ganzzahln
in eine Liste von Ziffern um.d
aus dieser Liste prüfen wird>1
undmod n d<1
, ob alsod
dividiert wirdn
.n
durchd
und rekursiv anwendenf
:f$div n d
.n
.n
sie an und geben dieminimum
der Liste zurück.quelle
Gelee , 8 Bytes
Probieren Sie es online!
Alternative Version, viel schneller, 9 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 , 59 Bytes
Probieren Sie es online!
quelle
Rubin ,
5247 BytesNimm an der nicht-exotischen Sprachgruppe teil! (Hinweis: Eine gute Idee, wenn Sie nicht Golf spielen, ist das Hinzufügen
.uniq
nach,.digits
da alle ähnlichen Branchen ähnliche Ergebnisse erzielen.)Probieren Sie es online!
Erläuterung
quelle
x<2|n%x?n:f[n/x]
zwei oder drei Bytes speichern (je nachdem, ob Sie ein|
oder zwei benötigen )?value%zero
als Division durch Null behandelt, sodass ein Kurzschluss nicht funktioniert. Außerdem0
ist ein truthy Wert in Ruby (die einzigen Falsey Werte sind falsch und nil).||
s funktionieren ?>0
, aber dann ist es die gleiche Zeichenanzahl.0
kommt, wenn Sie es nicht benutzen|
?Common Lisp , 136 Bytes
Probieren Sie es online!
Lesbare Version:
quelle
Jelly , 21 Bytes
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 44 Byte
-7 Bytes dank Mischa Lawrow.
Probieren Sie es online!
quelle
⋂
Zeichens für basiertIntersection
. Es gibt jedoch große Fälle, die nicht mehr verarbeitet werden können, da nicht mehr genügend Speicher zur Verfügung stehtRange[#-1]
.Most@Divisors@#
statt verwendenRange[#-1]
, um das Speicherproblem zu vermeiden, aber das Ergebnis ist 49 Bytes .JavaScript (Firefox 30-57), 49 Byte
ES6-kompatible Version, 52 Bytes:
Ursprünglich habe ich versucht, irrelevante Ziffern herauszufiltern, aber es stellt sich heraus, dass es mit 54 Bytes etwas länger ist:
quelle
Kotlin ,
100 bis99 BytesVerschönert
Prüfung
Bearbeitungen
quelle
Gelee , 15 Bytes
Probieren Sie es online!
Ich muss zugeben, dass der
߀
Teil von Eriks Antwort entlehnt ist . Der Rest wird separat entwickelt, zum Teil, weil ich nicht einmal verstehe, wie der Rest dieser Antwort überhaupt funktioniert: P.Wie es funktioniert?
* Ich bin angenehm überrascht,
¡
dass das auf Listen so funktioniert, denn seine normale Bedeutung ist es , dies n- mal anzuwenden .Nachdem Dennis erklärt hat, warum
߀
keine Bedingung erforderlich ist, haben wir diesen 12- Byte -Code oder seine 8-Byte-Version: P.quelle
R ,
10198 BytesProbieren Sie es online!
Eine Tonne von Bytes wird verwendet, um die Ziffern zu extrahieren und welche zu teilen
x
. Vielleicht ist ein anderer Ansatz notwendig.quelle
Excel Vba, 153 Bytes
Zum ersten Mal Code-Golf in der einzigen Sprache, die ich kenne :( Nicht gerade golffreundlich ...
Rufen Sie wie folgt an:
Ich habe keine Ahnung, wo ich das online testen soll.
quelle
And N > 0
einN = S
in einer vorherigen Zeile ersetzen . (Wenn ich es testen könnte, wäre mein erster Instinkt, zu prüfen, ob Leerzeichen entfernt werden können.)APL (Dyalog) , 33 Bytes
Probieren Sie es online!
Wie?
⍎¨⍕⍵
- greifen Ziffern vonn
1~⍨
- ohne1
so/⍨
- Filtern nach0=⍵|⍨o
- Teilbarkeitn
durch die Ziffer⍬≡...:⍵
- Wenn leer, zurückn
⌊/
- Andernfalls geben Sie mindestens∇¨
- Rekursion für jede Zahl in⍵÷d
- die Divisionn
durch jede der oben gefilterten Ziffernquelle
Perl 5, 87 + 1 (
-p
) = 88 Bytesversuche es online
quelle
PHP, 120 Bytes
Probieren Sie es online!
quelle
Pari / GP , 49 Bytes
Probieren Sie es online!
quelle