Erstellen Sie anhand einer Liste von Ganzzahlen eine boolesche Maske, sodass die einzelnen Werte aus der Liste anhand der wahren Indizes gefiltert werden können. Welcher Index als der wahre Index ausgewählt wird, spielt keine Rolle, solange für jeden Indexsatz, der identischen Werten entspricht, nur einer von ihnen ausgewählt wird.
Die Eingabe ist eine nicht leere Liste nicht negativer Ganzzahlen in einem für Ihre Sprache geeigneten Format, und die Ausgabe ist eine Liste boolescher Werte, die der obigen Spezifikation folgt. In der Ausgabeliste dürfen Sie eigene Definitionen von Wahrheits- und Falschwerten verwenden.
In meinen nachstehenden Beispielen definiere 1
ich Wahrhaftigkeit und 0
Falschheit.
[5, 4, 7, 1] Input
[1, 1, 1, 1] Output
Select only the values with with true indicies in the sieve
[5 4 7 1] Contains zero duplicate values
[5, 9, 7, 5, 6, 0, 5]
[0, 1, 1, 1, 1, 1, 0]
[ 9, 7, 5, 6, 0 ]
Testfälle
Wenn ein vorhanden ist or
, bedeutet dies, dass mehrere gültige Ausgaben vorhanden sind. Befindet sich ...
nach dem ein nachstehender Auslassungspunkt or
, wurden nicht alle möglichen Ausgaben aufgelistet.
[0] = [1]
[55] = [1]
[32, 44] = [1, 1]
[0, 0] = [1, 0] or [0, 1]
[9001, 9001, 9001] = [1, 0 , 0] or [0, 1, 0] or [0, 0, 1]
[5, 4, 7, 1] = [1, 1, 1, 1]
[1, 2, 3, 4, 3, 5] = [1, 1, 1, 1, 0, 1] or
[1, 1, 0, 1, 1, 1]
[5, 9, 7, 5, 6, 0, 5] = [1, 1, 1, 0, 1, 1, 0] or
[0, 1, 1, 1, 1, 1, 0] or
[0, 1, 1, 0, 1, 1, 1]
[0, 8, 6, 6, 3, 8, 7, 2] = [1, 1, 1, 0, 1, 0, 1, 1] or
[1, 0, 0, 1, 1, 1, 1, 1] or
[1, 0, 1, 0, 1, 1, 1, 1] or
[1, 1, 0, 1, 1, 0, 1, 1]
[45, 47, 47, 45, 24, 24, 24, 8, 47, 41, 47, 88]
= [1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1] or ...
[154, 993, 420, 154, 154, 689, 172, 417, 790, 175, 790, 790, 154, 172, 175, 175, 420, 417, 154, 175, 172, 175, 172, 993, 689, 993, 993, 790]
= [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] or ...
Regeln
- Das ist Code-Golf, also gewinnt die kürzeste Lösung.
- Builtins sind erlaubt!
- In der Ausgabeliste dürfen Sie eigene Definitionen von Wahrheits- und Falschwerten verwenden. Wenn Sie dies wünschen, geben Sie bitte Ihre Definitionen an.
- Die Eingabe ist eine nicht leere Liste nicht negativer Ganzzahlen.
- Sie können wählen, ob Sie nur eines oder mehrere oder sogar alle Siebe ausgeben möchten. Solange jedes Sieb gültig ist, wird es akzeptiert.
quelle
[0, 8, 6, 6, 3, 8, 7, 2]
sollte[1, 0, 0, 1, 1, 1, 1, 1]
in die Liste der gültigen Ausgaben aufgenommen werden?Antworten:
MATL,
764 Bytes1 Byte gespart dank @Luis
2 Byte gespeichert dank @Dennis
Wir definieren
1
Wahrheit und alle anderen Werte als falschProbieren Sie es online
Alle Testfälle
Erläuterung
quelle
&=Rs1=
l=
.Gelee , 4 Bytes
Begünstigt die letzten Vorkommen. Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Python 3,
47353936 BytesÖffnet das erste Element aus der Liste, prüft, ob es an anderer Stelle in der Liste vorhanden ist, und fügt
True
oderFalse
in eine neue Liste ein.Gibt für diese Funktion
False
einen eindeutigen Wert an undTrue
ist andernfalls (True=0
undFalse=1
)Vielen Dank an Dennis für eine Tonne Bytes
Original, 47 Bytes:
Versuch es
quelle
lambda n:[1-(n.pop()in n)for x in n*1]
spart ein paar Bytes.lambda n:[n.pop()in n for x in n*1]
funktioniert also auch..pop(0)
oder die Maske kommt umgekehrt heraus..pop()
verarbeitet das letzte Element zuerst, die Reihenfolge ist also umgekehrt.Pyth, 6 Bytes
Gibt eine Liste von Bools (
True
und ausFalse
) aus. Prüft für jedes Element in der Eingabe, ob sein Index dem Index des ersten Vorkommens des Werts entspricht. Mit anderen Worten wird geprüft, ob jedes Element das erste Vorkommen ist.Im pythonischen Pseudocode:
Teste es hier.
quelle
J , 2 Bytes
Hieraus entstand die Idee für diese Herausforderung. Das Builtin
~:
wirdNub-Sieve
in J aufgerufen und erstellt eine Boolesche Liste, die die in der Challenge beschriebene Operation ausführt. Hier1
repräsentierttrue
und0
repräsentiertfalse
.quelle
05AB1E , 8 Bytes
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
APL, 6 Bytes
Versuch es
Erläuterung:
quelle
C #, 63 Bytes
Ich könnte es auch dazu bringen, 1 oder 0 zurückzugeben, und dann den Parameter und den Rückgabetyp gleich eingeben, um dies als Lambda-Ausdruck zuzulassen.
Einige Anleitung wäre dankbar
gleicher Typcode
quelle
Python, 35 Bytes
Verwendet
True
als der falsche Wert undFalse
für den Wahrheitswert. Markiert das letzte Erscheinungsbild jedes Elements.Wählt das erste Element nur aus, wenn es nicht unter den verbleibenden Elementen angezeigt wird, und kehrt dann zum Rest der Liste zurück, solange es nicht leer ist. Der
l.pop(0)
extrahiert das erste Element und entfernt es gleichzeitig.quelle
Netzhaut , 23 Bytes
Die Eingabe ist eine durch Leerzeichen getrennte Liste. (Tatsächlich
[1, 2, 3]
funktionieren auch andere Formate wie .)Probieren Sie es online!(Funktioniert mit mehreren durch Zeilenvorschub getrennten Testfällen gleichzeitig.)
Wir wandeln einfach jedes Element in
0
ein anderes um, wenn es später in der Eingabe eine weitere Kopie davon gibt, und in ein1
anderes.quelle
PowerShell v2 +, 40 Byte
Erstellt ein leeres Array
$a
. Dann nehmen wir die Eingabeliste via$args[0]
und leiten sie in eine Schleife|%{...}
. Bei jeder Iteration wird entweder1
oder0
aus einem Pseudoternär ausgewählt, je nachdem, ob das aktuelle Element vorhanden ist$a
oder nicht. Diese Auswahlen verbleiben in der Pipeline. Dann fügen wir das aktuelle Element in das Array ein$a
. Die Pipeline-Elemente werden gesammelt und die Ausgabe als Array ist implizit.Beispiel:
(hier mit einem Zeilenumbruch-Trennzeichen ausgeben, da dies die Standardeinstellung
.ToString()
für ein Array ist)quelle
JavaScript (ES6), 31 Byte
Null ist wahr und andere Zahlen sind falsch.
quelle
Mathematica,
5331 BytesVielen Dank an Miles, der mir eine Idee gegeben hat, mit der 22 Byte eingespart wurden.
quelle
MapIndexed
den vorherigen Unterlisten?MapIndexed[s[[;;#-1&@@#2]]~FreeQ~#&,s=#]&
dauert 41 Bytes.MapIndexed
diesen Fall zu verkürzen , und Sie müssen nicht einmal den Index extrahieren oder dekrementierenPerl 5
quelle
..
Bietet skalaren Kontext, den Sie nicht benötigen sollten~~
. 2.grep
gibt truey / falsy zurück, du solltest es also nicht brauchen?1:0
. 3.grep/.../,@a
ist kürzer alsgrep{/.../}@a
. 4. Du solltest das Finale nicht brauchen;
. 5. Sie sollten die Klammern nicht benötigen1..@a
. 6. Sie zeigen nicht, woher die Eingabe kommt oder wohin die Ausgabe geht: siehe meta.codegolf.stackexchange.com/q/2447Java, 96 Bytes
Ändert das Array an Ort und Stelle. Begünstigt das letzte Vorkommen.
Der wahre Wert ist,
1
während der falsche Wert ist0
.Überprüfen Sie alle Testfälle .
Ungolfed:
quelle
Eigentlich 11 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Pyke, 4 Bytes
Probieren Sie es hier aus!
quelle
C ++, 242 Bytes
Zugegeben eine Overkill Lösung, da es auf funktioniert jedem Standard - Container von jedem bestellten Typ:
Ungolfed:
(und weiter verallgemeinert)
Testsuite:
quelle
TSQL 52 Bytes
Geige
quelle
PHP,
666239 BytesAusnahme von Werten, die als false (false, 0, "") und numerische Strings ausgewertet werden ("1" entspricht 1)
neue Version (Programm, 37 + 2 Bytes)
schlägt Java und (jetzt wieder) C #. Schlägt jetzt sogar fast Python. Glücklich.
0
(true) und1
(false)Einfügungen
!
nachprint
dem Invertierenregister_globals=On
,short_open_tags=On
underror_reporting=0
inphp.ini
fürphp-cgi
dann Anruf
php-cgi -f <filename> a[]=<value1> a[]=<value2> ...;echo""
;$a
mit$_GET[a]
(+6), setzeshort_open_tags=On
underror_reporting=0
$a
mitarray_slice($argv,1)
(+19), entfernen<?
(-2)und Call
php -d error_reporting=0 -r '<code>' <value1> <value2> ...;echo""
alte Version (Funktion, 62 Bytes)
false
für wahr undtrue
für falsch zurück; (Ausgabe als leere Zeichenkette oder1
)Einfügen
!
nach$m[]=
dem Invertierentests (auf alte version)
quelle
Haskell,
2927 BytesVerwendet
False
als wahr,True
als falscher Wert:Möglicherweise müssen Sie
import Data.List
verwenden,tails
aber tryhaskell.org führt den Code so aus, wie er ist.quelle
\a->[...]
ist eine richtige Funktion. Im Zweifelsfall gibt ihm einen Namen:f a=[...]
.import Data.List
sehr. ein. ist eine sehr glatte Piste, da Sie jede Menge Importe (oder sogar Definitionen!) in Ihre GHCi-Konfiguration einfügen können. b. behandelt tryhaskell.org als eine maßgebliche Implementierung der Haskell-Sprache, aber es ist wirklich keine. (Nochmals, was ist, wenn ich meine eigene Try-Haskell-Online-Umgebung erstelle, die all die Importe und Definitionen enthält, die Golfer sich jemals wünschen könnten? Ist das immer noch wirklich „Haskell“?)Perl 5 + Perligata , 343 Bytes
315 Bytes plus 28 für
-MLingua::Romana::Perligata
Verwenden Sie als
perl -MLingua::Romana::Perligata foo.pl
; Eingabe (von stdin) und Ausgabe (bis stdout) sind durch Unterstriche getrennte Zeichenfolgen von Dezimalzahlen. Getestet auf Strawberry 5.20.2 mit Version 0.6 von Perligata; Ich weiß nicht, ob es mit Perligata Version 0.50 funktioniert.Offensichtlich ist das klar wie eine Glocke. Falls dies nicht der Fall ist, führen Sie es mit
-MLingua::Romana::Perligata=converte
statt aus-MLingua::Romana::Perligata
undperl
geben Sie statt des Skripts eine Übersetzung in reguläres Perl aus:Verwenden Sie für eine tokenweise Analyse
-MLingua::Romana::Perligata=discribe
.Golfnoten:
.
.scinde
braucht kein zweites Argument und verwendethoc
.ao aum tum nullum addementum da
weil ich nichtmorde
zur Arbeit kommen konnte.per ium in qis... ro I da
weil ich nichtvanne
zur Arbeit kommen konnte.huic vestibulo perlegementum da
versuchte ich es-pMLingua::Romana::Perligata
, brachte es aber auch nicht zum Laufen.Nur für Tritte (obwohl diese ganze Antwort nur für Tritte war):
Huic vestibulo perlegementum da. Qis lacunam scindementa da. Dum qis fac sic ao qis decumulamentum da. Ao aum tum nullum addementum da. Meo io. Meo ro. Per ium in qis fac sic si ium tum aum aequalitas fac sic ro I da cis cis. Ro nullum tum non rum addementum da. Capita bis rum cis. Per in bis fac sic hoc tum lacunam egresso scribe cis.
Google TranslateThis court perlegementum grant. QIS gap scindementa grant. While QIS QIS decumulamentum do so ao da. Ao sum and no addementum grant. My io. My ro. Through ium in QIS do so if the sum ium equality do so ro 1 from cis. Ro was not any rum addementum grant. The heads of the bis side. Write, do so as soon as he at that time that in the gap by the Kish was taken.
.quelle