Ihre Aufgabe ist es, eine positive Zahl als Eingabe n zu nehmen und die Länge der längsten Wiederholungsstellendarstellung von n in einer beliebigen Basis auszugeben . Zum Beispiel kann 7 wie folgt dargestellt werden
111_2
21_3
13_4
12_5
11_6
10_7
7_8
Die Wiederholungsziffern sind 111_2
und 11_6
, 111_2
ist länger, also ist unsere Antwort 3.
Dies ist eine Code-Golf- Frage, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Testfälle
1 -> 1
2 -> 1
3 -> 2
4 -> 2
5 -> 2
6 -> 2
7 -> 3
8 -> 2
9 -> 2
10 -> 2
11 -> 2
26 -> 3
63 -> 6
1023-> 10
Beispielimplementierung
Hier ist eine Implementierung in Haskell, mit der weitere Testfälle generiert werden können.
f 0 y=[]
f x y=f(div x y)y++[mod x y]
s x=all(==x!!0)x
g x=maximum$map(length.f x)$filter(s.f x)[2..x+1]
code-golf
base-conversion
Weizen-Assistent
quelle
quelle
base > 1
?222
in der Basis 3.Antworten:
Gelee , 9 Bytes
Ein monadischer Link, der Nummern akzeptiert und zurückgibt
Probieren Sie es online! oder sehen Sie sich eine Testsuite an (Eingaben eins bis einschließlich 32).
Wie?
... oder vielleicht hätte ich das tun sollen:
Für die
Lo1
z.quelle
ZL
es kürzer ist alsL€Ṁ
...JavaScript (ES6), 62 Byte
quelle
Haskell ,
868179 Bytes2 Bytes gespart dank Laikoni
Probieren Sie es online!
Da dies ein wenig nachgelassen hat, ist hier mein Ansatz. Es ist eine Golfversion des Beispielcodes, den ich für die Frage erstellt habe. Ich denke, es kann definitiv kürzer sein. Ich dachte nur, ich würde es da rausbringen.
quelle
length.head.filter(all=<<(==).head).(<$>[2..]).(!)
.Schale ,
1311 Bytes-2 Bytes dank Zgarb
Probieren Sie es online!
quelle
mm
kann seinM
, undṠoΛ=←
kann seinȯ¬tu
. Es gibt noch keine integrierte Funktion, um zu überprüfen, ob alle Elemente einer Liste gleich sind ...ΓoΛ=
funktioniert auch als vier BytesM
sollte in den Dokumenten sein, da wir es für eine Weile gehabt haben. Ich sollte das reparieren. Aber es ist im Grunde das Doppelte vonṀ
.Mathematica, 71 Bytes
Probieren Sie es online!
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
-1 dank kalsowerus .
quelle
L>вʒË}нg
für 8 BytesBrachylog , 12 Bytes
Probieren Sie es online!
quelle
Python 3 ,
9287 Bytes5 Bytes dank Halvard Hummel.
Probieren Sie es online!
quelle
Mathematica, 58 Bytes
Löst einen Fehler aus (da base-1 keine gültige Basis ist), der aber ignoriert werden kann.
Natürlich ist es in Ordnung, die Länge des ersten repdigit (
FirstCase
) zu nehmen, da Zahlen in niedrigeren Basen nicht kürzer sein können als in höheren Basen.quelle
CJam (17 Bytes)
Online-Testsuite . Dies ist ein anonymer Block (Funktion), der eine Ganzzahl auf dem Stapel annimmt und eine Ganzzahl auf dem Stapel belässt.
Arbeitet mit brachialer Gewalt und dient
3
als Ausweichbasis für Sonderfälle (Eingabe1
oder2
).quelle
Perl 6 , 49 Bytes
Probieren Sie es online!
Erläuterung
Die Polymod- Methode ist eine Verallgemeinerung von Python
divmod
: Sie führt eine wiederholte Ganzzahldivision unter Verwendung einer gegebenen Liste von Divisoren durch und gibt die Zwischenreste zurück.Es kann verwendet werden, um eine Menge in mehrere Einheiten zu zerlegen:
Stoppt,
polymod
wenn der Quotient Null erreicht , wenn eine träge Sequenz als Liste der Teiler übergeben wird . Indem Sie ihm eine unendliche Wiederholung der gleichen Zahl geben, zerlegen Sie die Eingabe in Ziffern dieser Basis:Ich benutze dies hier, weil es im Gegensatz zur stringbasierten
.base
Methode, die nur bis zur Basis 36 unterstützt, beliebig hohe Basen erlaubt .quelle
[]
Umgebung entfernen,polymod
indem Sie$_
auf@_
TI-BASIC, 37 Bytes
Fordert zur Eingabe von N auf und gibt die Ausgabe in Ans zurück.
Erläuterung
Zur Übersicht berechnet es für jede mögliche Basis B nacheinander zuerst die Anzahl der Stellen von N, wenn diese in der Basis B dargestellt sind, und prüft dann, ob N durch den Wert teilbar ist, der durch die gleiche Anzahl von 1 Stellen in der Basis B dargestellt wird.
quelle
Pyth , 13 Bytes
Probieren Sie es online!
quelle
Java 8, 111 Bytes
Die Byteanzahl von 111 ist ebenfalls eine Wiederholungsziffer. ;)
Erläuterung:
Probieren Sie es hier aus.
quelle
Java 8, 79 Bytes
Ein Lambda von
Integer
bisInteger
.Ungolfed Lambda
Überprüft die Radices in aufsteigender Reihenfolge von 2 bis zur Ermittlung eines stelligen Radix. Beruht auf der Tatsache, dass der kleinste solcher Radix einer Darstellung mit den meisten Ziffern entspricht.
m
ist eine Kopie der Eingabe,b
ist die Basis undl
ist die Anzahl der überprüften Ziffern (und letztendlich die Länge der Basisdarstellungb
).quelle
Burlesque, 24 Bytes
(siehe richtige Lösung unten)
In Aktion sehen .
Zumindest, wenn meine Intuition stimmt, dass eine Repräsentation mit Wiederholungsziffern immer die längste ist? Sonst ähm ...
quelle