Ich definiere die Methode zum Kombinieren einer Sequenz so, dass jede Zahl in der Sequenz als Zeichenfolge verkettet wird und dieses Ergebnis zu einer Ganzzahl gemacht wird.
[1, 2, 3] -> 123
Für jede endliche Folge von mindestens 3 aufeinanderfolgenden ganzen Zahlen, bei denen genau ein Element in der Folge fehlt und dieses fehlende Element möglicherweise nicht das erste oder letzte Element in der Folge ist, geben Sie die ganze Zahl aus, die sich aus der kombinierten Folge ergibt. Ich spreche von einer "einfach verlustbehafteten Ganzzahl".
[1, 2, 3] -> {1, 3} (missing an element) -> 13
Diese Folge von einfach verlustbehafteten ganzen Zahlen ist die Vereinigung der folgenden Teilfolgen (Partitionen?):
Die erste Untersequenz{n, n+2}
ist A032607 .
{n, n+2} -> 13, 24, 35, 46, 57, 68, 79, 810, 911, 1012, ...
{n, n+1, n+3} -> 124, 235, 346, ...
{n, n+2, n+3} -> 134, 245, 356, ...
{n, n+1, n+2, n+4} -> 1235, 2346, 3457, ...
{n, n+1, n+3, n+4} -> 1245, 2356, 3467, ...
{n, n+2, n+3, n+4} -> 1345, 2456, 3567, ...
...
for n ∈ ℕ (integers >= 1)
Diese ganzen Zahlen müssen in aufsteigender Reihenfolge gedruckt werden. Die ersten 25 einfach verlustbehafteten ganzen Zahlen sind unten :
13, 24, 35, 46, 57, 68, 79, 124, 134, 235, 245, 346, 356, 457, 467, 568, 578, 679, 689, 810, 911, 1012, 1113, 1214, 1235, ...
Erste 7597 Singly Lossy Integers
Ungolfed-Referenzimplementierungen. Ich habe es schneller gemacht als kleiner.
Regeln:
- Kürzester Code gewinnt
- Sie können entweder (sagen welche):
- Drucken Sie die einfach verlustbehafteten ganzen Zahlen für immer
- Bei einer positiven Ganzzahl n werden die ersten n Elemente als Liste oder als durch Kommas oder Leerzeichen getrennte Zeichenfolge ausgegeben oder zurückgegeben.
- Sie sollten beliebig große Ganzzahlen unterstützen, wenn Ihre Sprache dies zulässt, insbesondere wenn Sie für immer drucken.
Hinweis: Für diese Sequenz ist noch kein Eintrag im OEIS vorhanden.
Noch eine Anmerkung: Ich habe sie "Einfach verlustbehaftete Ganzzahlen" genannt, so dass es wiederum "Einfach verlustbehaftete Ganzzahlen", "Einfach verlustbehaftete Ganzzahlen", "(N + 1) verlustbehaftete Ganzzahlen" und "Verlustbehaftete Ganzzahlen" geben kann "(Vereinigung all dieser).
fastest-code
Herausforderung.Antworten:
Mathematica, 101 Bytes
Yay! Ausnahmsweise habe ich die kürzeste Antwort!
Party[Hard]
quelle
Party[_]:=While[True,Print["PARTY!!!"]]
. Das Argument wird ignoriert, weil jede Party eine Party ist.Party[Where]
sollte druckenHere!
undParty[When]
sollte druckenNow!
usw. Denken Sie nicht leichtfertig an Feiern.Party[x_]:=Switch[x,Where,"Here!",When,"Now!",How,Pause[1];"...Really?",_,While [True,Print["PARTY!!!"]]]
Haskell,
131,114, 106 BytesDies wird durch die Größe begrenzt
Int
, aber es kann leicht durch den Austausch erweitert werdenInt
mitInteger
.Weniger golfen:
8 Bytes von @nimi golfen.
quelle
n
?Integer
wird es fortgesetzt, bis Ihnen der Speicher (oder die Geduld) ausgeht. Es geht weiterInt
, gibt aber falsche Antworten, sobald es überläuft (> 2^29-1
).main=print$
das GHCi nicht braucht. GHC.io verfügt nicht über genügend Arbeitsspeicher und der Funktionsumfang von TryHaskell.org ist zu begrenzt.Python 3,
136127126122 BytesBrute-Force-Lösung, ich versuche nicht einmal n = 7000 (es dauert schon 10s für n = 100)
Erläuterung
Ergebnisse
Vielen Dank an @ mbomb007 und @FricativeMelon für ihre Hilfe
quelle
)
und dem folgenden Zeichen, und Sie könnent=range
am Anfang des Programms einfügen und allerange
Funktionsaufrufe durch Aufrufe ersetzent
. Das sollte die Anzahl der Bytes stark reduzieren.i!=l+k
kann auch durch ersetzt werdenl+k-i
, wodurch ein Byte gespart wird.str(i)for i in r(1+k,j+k)if l+k-i
kann durch ersetzt werdenstr(i+k)for i in r(1,j)if l-i
, wodurch 4 Bytes eingespart werden.Python 3,
319,270, 251 BytesNimmt eine
h
als Eingabe von STDIN und druckt ein Array der erstenh
einfach verlustbehafteten Ganzzahlen. Es ist auch sehr schnell und dauert nur ein paar Sekundenh=7000
.Erläuterung: Beachten Sie, dass wir, wenn wir unendlich viel Zeit hätten, einfach über alle iterieren
n,k
und für jedes Paar allen+1,n+2,...,n+k-1
(k-1
Möglichkeiten) löschen und alle (unendlich viele) Werte daraus abrufen könnten. Sortieren Sie dann die Reihenfolge in aufsteigender Reihenfolge und kürzen Sie aufh
Elemente. Natürlich können wir das nicht wirklich tun, aber wenn wir einen Punkt erreichen, an dem sich die ersten sortiertenh
Elemente nicht mehr ändern können, indemn,k
wir die Werte zukünftiger Paare addieren , können wir einfach abschneiden und dies in endlicher Zeit tun. Für jedesn,k
Paar hat es mindestensfloor(log10(n)+1)*k
Ziffern, möglicherweise mehr. Also lassen Siec(n,k)=floor(log10(n)+1)*k
uns diese Paare nach dem Wert gruppieren , bei dem wir garantieren, dassc(a,b)<c(n,k)
wira,b
vorher verarbeitenn,k
. Wenn wir die Liste sortiert haben und ihr letztes Element hatd
ziffern, undd<c(n,k)
für die nächsten,k
verarbeitung können wir aufhören, da wir mit so vielen oder weniger ziffern keine nummer mehr bekommen können, da wir sie nach unserer garantie dann schon hätten verarbeiten sollen, also egal welche nummern wir würde am Ende Computing, können die erstenh
Elemente nicht ändern, so können wir sie nur zurückgeben.Jetzt brauchen wir nur noch die Funktion, die die angegebene Reihenfolge garantiert
c(n,k)
. Für jedesy
erhältlichec(n,k)
müssen wir alle(n,k)
so verarbeiten, dassy=c(n,k)
. Sagen wirL=floor(log10(n)+1)
für einigen
. Dahery=L*k
muss halten. Beginnen Sie mitk=2,L=y/2
undk=3,L=y/3;k=4,L=y/4...k=y,L=1
überspringen Sie dann die nicht ganzzahligen Werte vonL
. Um die ganze zu erzeugenc(n,k)
Funktion, beginnen Sie mit(1,2)
mity=2
und erhöheny
um 1 und beginnen wieder , wann immer Sie bekommenL==1
. Jetzt haben wir eine Aufzählung von Paaren(L,k)
, und es erfüllt unsere Bedingung. Allerdings müssen wir alle möglichen abrufenn
ausL
, die wir durch Aufzählen alle ganzen Zahlen mit tunL
Ziffern. Dann für jedes dieser(n,k)
Paare, für jedes derk-1
Eventuell ausgelassene Elemente müssen wir die verlustbehaftete Zahl generieren, die wir als Ergebnis erhalten, und sie zu unserer Liste hinzufügen, die leer beginnt. Dann sortieren wir die Liste und wiederholen das nächste(L,k)
Paard<c(n,k)
.Code-Aufschlüsselung (etwas veraltet):
quelle
len(`q[h]`)
sollte es seinlen(str(q[h]))
, beliebige ganze Zahlen zu unterstützen? Oder sagen Sie einfach, ob es nur bis zu einer bestimmten Grenze funktioniert, da Sie einen Parameter verwenden und nicht für immer drucken.2**63-1
) ist, wirdL
bei Verwendung mit einem am Ende angezeigtrepr
. Beachten Sie, dass dieser Eintrag in der Sequenz wahrscheinlich sehr weit entfernt ist.