Die Aufgabe
Bei dieser Herausforderung handelt es sich bei Ihrer Eingabe um eine nicht leere Liste positiver Ganzzahlen, die im systemeigenen Format Ihrer Sprache angegeben wird. Ihre Ausgabe ist dieselbe Liste im selben Format, wobei einige Elemente entfernt wurden. Sie müssen jedes Vorkommen 1
, jedes zweite Vorkommen 2
, jedes dritte Vorkommen 3
usw. entfernen . Im Allgemeinen müssen Sie für jede positive ganze Zahl N
jedes N
Vorkommen von N
aus der Liste entfernen , beginnend mit dem N
achten Vorkommen.
Beispiel
Betrachten Sie die Eingabeliste
[3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2]
Zunächst entfernen wir jedes Vorkommen von 1
:
[3,2,6, 6,2,3,2,6,6,6,6, 6,6,3,3,7,2]
Dann jedes zweite Vorkommen von 2
:
[3,2,6, 6, 3,2,6,6,6,6, 6,6,3,3,7 ]
Dann jedes dritte Vorkommen von 3
:
[3,2,6, 6, 3,2,6,6,6,6, 6,6, 3,7 ]
Die Zahlen 4
und 5
kommen in der Eingabe nicht vor, sodass sie übersprungen werden können. Als nächstes entfernen wir jedes sechste Vorkommen von 6
:
[3,2,6, 6, 3,2,6,6,6, 6,6, 3,7 ]
Es gibt nur ein Vorkommen von 7
, sodass auch dieses übersprungen werden kann. Somit ist die korrekte Ausgabe
[3,2,6,6,3,2,6,6,6,6,6,3,7]
Regeln und Wertung
Sie können entweder ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
[1] -> []
[2] -> [2]
[1,1,1] -> []
[2,2,2] -> [2,2]
[1,1,2,2,2,3,3,3,3] -> [2,2,3,3,3]
[1,2,3,1,2,3,1,2,3,1,2,3] -> [2,3,3,2,3]
[3,2,6,1,1,6,2,3,2,6,6,6,6,1,6,6,3,3,7,2] -> [3,2,6,6,3,2,6,6,6,6,6,3,7]
[5,4,5,4,3,5,4,5,4,5,4,3,5,4,5,3,3,3,4,5,4,5,4,5,4,3,3,3,5,4] -> [5,4,5,4,3,5,4,5,4,3,5,4,5,3,3,4,5,5,4,4,3,3,5,4]
[6,4,5,8,2,9,3,1,8,5,3,5,5,6,3,5,1,2,3,9,3,5,8,7,5,9,1,3,4,8,2,3,4,7,8,5,8,5,3,1] -> [6,4,5,8,2,9,3,8,5,3,5,5,6,3,9,3,5,8,7,5,9,4,8,2,3,4,7,8,5,8,5,3]
[4,4,9,12,9,4,4,4,12,9,12,9,12,4,12,4,4,9,4,9,12,4,12,4,4,12,4,4,9,12,9,12,9,4,9,12,4,9,12,9,12,9,4,9,12,12,4,4,12,4] -> [4,4,9,12,9,4,4,12,9,12,9,12,4,12,4,9,4,9,12,4,12,4,12,4,4,9,12,9,12,4,9,12,9,9,12,9,4,9,12,12,4,4,12]
[2,2,11,11,11,11,6,2,2,6,6,2,2,2,2,6,11,6,11,11,2,11,2,6,6,11,2,11,6,2,6,6,6,6,6,11,2,11,11,6,6,6,11,6,2,6,2,6,6,2,11,2,2,11,11,11,11,2,6,2] -> [2,11,11,11,11,6,2,6,6,2,2,6,11,6,11,11,2,11,6,11,2,11,6,6,6,6,6,2,11,11,6,6,6,11,6,2,6,6,11,2,11,11,11,11,2,6]
[20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102] -> [20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,21,22,101,102,20,21,22,100,102,20,21,22,100,101,20,21,22,100,101,102,20,21,22,100,101,102,20,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,22,100,101,102,20,21,100,101,102]
Bestenliste
Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren. Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
## Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten, stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
## Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
=
vergleicht ganze Zahlen.[3,2,1]=;\
Vergleicht zum Beispiel3
mit dem Element des Gebens[3]
,2
mit dem des Gebens[3, 2]
und1
mit dem des[3, 2, 1]
Gebens[1, [0, 1], [0, 0, 1]]
.awk, 10 bytes
Die Eingabe erfolgt über STDIN, eine Nummer pro Zeile.
Erläuterung
Behält einen Zähler für jede Zahl in einem assoziativen Array bei und druckt nur, wenn der Zählerwert modulo
n
nicht Null ist. Drucken ist implizit. Lange Version:quelle
Pyth,
181514109 BytesIch denke, dies ist der erste Code, den ich geschrieben habe und der fünf aufeinander folgende Variablenreferenzen in neun Bytes enthält.
Ich wünschte, die Array-Manipulationslösung (
u.DG%HgxHGH{QQ
14 Byte) wäre nicht so lang.Probieren Sie es hier aus .
quelle
Python, 57 Bytes
quelle
Perl 6 , 28 Bytes
Verwendungszweck:
Stellen Sie sicher, dass die richtigen Elemente weggeworfen werden
quelle
Im Ernst,
2217 BytesHex Dump:
Probieren Sie es online
Erläuterung:
quelle
JavaScript ES6, 34 Byte
Es stellte sich heraus, dass es sich um den Perl-Algorithmus von Brad handelt.
Bearbeiten: 2 Bytes dank @ edc65 gespeichert.
quelle
a=>a.filter(v=>f[v]=-~f[v]%v,f=[])
Mathematica,
403836 BytesDies ist eine unbenannte Funktion, die a annimmt und zurückgibt
List
. Es definiert eine benannte Funktion,f
wenn sie ausgeführt wird (um die Zahlen im Auge zu behalten), kümmert sich jedoch darum, die relevanten Definitionen vonf
vorher zurückzusetzen.Erläuterung
Die Funktionsweise (oder Funktionsdefinitionen) in Mathematica ist sehr leistungsfähig. Wie in Haskell (zum Beispiel) können Funktionen nicht nur für bestimmte Typen, sondern auch für einzelne Werte (oder tatsächlich für beliebige Argumentmuster) überladen und definiert werden. Es ist jedoch noch leistungsfähiger als Haskell, da a) diese Werte als Nebenwirkungen während des Kontrollflusses definiert werden können und b) die Werte jederzeit neu definiert werden können. Das bedeutet, dass Funktionen eigentlich ziemlich leistungsfähige Nachschlagetabellen sind (die optional den nachgeschlagenen Wert berechnen können, anstatt ihn nur zu speichern).
Wenn wir die Golfitude aus dem Code entfernen, würde es ungefähr so aussehen:
Zuerst durchlaufen wir die Eingabe und definieren
f[x] = x
für allex
in der Liste.f
wird letztendlich verwendet, um zu verfolgen, wie oft jede Nummer bereits in der Liste enthalten ist. Warum zählen wir nicht ab0
? Die Schleife über der Liste ist aMap
. Der Ausdruck gibtf[x] = y
zurücky
(zusätzlich zum Speichern der Funktionsdefinition). Wenn Sie also auf setzenf[x]
,x
wird die Karte als Eingabeliste ausgewertet. Das spart zwei Bytes, da wir dann nichtlist
nochmal explizit dafür sorgen müssenSelect
. Ausgehend vonx
anstatt0
wirkt sich überhaupt nicht auf die Berechnung aus, da wir immer nur daran interessiert sindMod[f[x], x]
.(Normalerweise könnten wir einfach so etwas wie
f[_] = 0
eine Fallback-Definition verwenden, um das zu vermeidenMap
, aber wir wissen nicht, ob unsere Funktion zuvor verwendet wurde, wodurch einige vorherige Werte definiert würden, die unsere Zählung beeinträchtigen würden.)Dann
Select
filtert die Liste nur diejenigen Elemente zu halten , wo der unbenannte Funktion als das zweite Argument Ausbeuten geführtTrue
. Diese Funktion erhöht zuerst den Wert vonf[x]
(wobeix
das aktuelle Listenelement ist), um die Vorkommen zu zählen, und nimmt dann das resultierende Zählmodul aufx
. Wir wollen alle Elemente verwerfen, bei denen dies ergibt0
.quelle
CJam, 17 Bytes
Schlagen Sie einfach ... J? Ich bin mir nicht sicher, was ich von dieser Herausforderung wirklich erwarte. Beachten Sie, dass
""
CJam ein leeres Array darstellt.Versuchen Sie es online | Testsuite (der letzte Fall ist zu lang für den Permalink)
Erläuterung
quelle
JavaScript ES6, 55 Byte
Erläuterung
quelle
J, 18 Bytes
Verwendungszweck:
Ziemlich unkomplizierte Methode. Wir zählen die Vorkommen einer Zahl bis dahin und wählen die Zahl nur dann aus, wenn die Zahl die Anzahl teilt.
Weitere Erklärungen folgen später.
Probieren Sie es hier online aus.
quelle
PowerShell, 56 Byte
Verwendet einen ähnlichen Helfer-Array-Trick wie Rainer Ps Antwort , die ich unabhängig entwickelt habe, aber anscheinend mit FGITW erhalten habe.
Nimmt Eingaben als Array mit
param($a)
. Anschließend erstellen wir unser Hilfsarray$b
als mit Nullen gefülltes Array, indem wir den Kommaoperator in Verbindung mit dem überladenen Multiplikationsoperator verwenden. Dies schafft$b
gleich@(0,0,0...0)
mit$b.length
der maximalen Anzahl in gleich zu sein$a
.(Quick Plug für meine Antwort "Showcase your language" , wo ich dies im Detail beschreibe)
Als nächstes kommt unsere Ausgabe. Wir durchlaufen jedes Element unseres Eingabearrays
$a|%{...}
und jede Schleife überprüft eineif
Anweisung. Die Bedingung erhöht den Wert in unserem Hilfsarray, der dem aktuellen Element entspricht, vorab und überprüft dann mit dem Modulo-Operator, ob es sich um ein Vielfaches des aktuellen Elements handelt. Wenn es ein Vielfaches ist, ist der%
Wille gleich,0
was falsch ist, so dass der Willeif
nicht ausgeführt wird. Ansonsten geben wir das aktuelle Element aus.Nutzt die implizite Typumwandlung, um bei der Ausgabeformatierung zu sparen. Wenn eine Funktion oder ein Programm mehrere Elemente zurückgibt und Sie die Ergebnisse in einer Variablen speichern, erstellt PowerShell diese Variable dynamisch als Array. Beispiel:
quelle
R
110989992 BytesVollständige Korrekturen für das Neuschreiben mit Testfall 2/3 bearbeiten. 2 bearbeiten. 7 Bytes sparen dank @ Alex-A
quelle
function(a){for(i in 1:max(a))for(j in seq_along(b<-which(a==i)))if(j%%i<1)a[b[j]]=0;a[a>0]}
MATL , 20 Bytes
Dies verwendet die aktuelle Version (10.2.1) der Sprache / des Compilers.
Probieren Sie es online!
Erläuterung
quelle
R, 63 Bytes
quelle
224 Bytes
Dieser Code verwendet eine Rekursion. Mit
using
Anweisungen sind das 224 Bytes (160 für den Methodencode selbst).Probieren Sie es online aus.
quelle
for(int i=0,t=0;i<l.Count;i++)if(l[i]==n&&++t==n)l[i]=t=0;
System.Linq
dann!l.Any()
kürzer alsl.Count<1
, die kürzer ist alsl.Count==0
.w != 0 && w !=1
mitw > 1
.C # - 177 Bytes
Ungolfed
quelle
Mathematica, 63 Bytes
Interessant zum Golfen! Ignorieren Sie die gelegentliche Meldung, die angezeigt wird.
quelle
Ruby, 120 Bytes
quelle
TI-BASIC, 47 Bytes
Dies nutzt die Tatsache, dass auf einem neuen Rechner
L₁
initialisiert und gelöscht wird. Beachten Sie, dass der Versuch, eine leere Liste in TI-BASIC anzuzeigen, einen Fehler auslöst.quelle
APL, 16 Zeichen
Auf Englisch:
,\⍵
: vector des Vektors steht vor dem n-ten Element des Arguments+/¨⍵=
: Zähle pro Präfixvektor, wie viele gleich dem n-ten Element selbst sind×⍵|
: Zeichen der Mods (das heißt: 0, wenn der Rest der Division 0 ist, sonst 1)⍵/⍨
: des Arguments behalte nur das Element bei, in dem der Mod 0 istquelle
Schläger 179 Bytes
Ungolfed:
Testen:
Ausgabe:
quelle