Einführung:
Ich denke, wir haben alle davon gehört, aber hier eine kurze Zusammenfassung: Noah sammelte zwei von jeder Tierart auf dem Planeten, männlich und weiblich, um während einer großen Flut in seiner Arche zu retten. Das eigentliche Zitat aus der Bibel lautet:
Genesis 7: 2-3
Du musst sieben von jeder Art von sauberem Tier mitnehmen, das Männchen und seinen Gefährten, zwei von jeder Art von unreinem Tier, das Männchen und seinen Gefährten und sieben von jeder Art von Vogel am Himmel , männlich und weiblich, um ihre Nachkommen auf der Erde zu bewahren.
Quelle
Aber um dieser Herausforderung willen werden wir den sauberen / unreinen Teil und den Teil, in dem er sieben von jedem Tier genommen hat, ignorieren. Bei dieser Herausforderung geht es nur um diesen Teil:
Zwei von jeder Art von
unreinemTier, das Männchen und sein Gefährte
Herausforderung:
Eingang:
Sie erhalten eine Liste mit positiven ganzen Zahlen (in zufälliger Reihenfolge).
Ausgabe:
Zwei unterschiedliche Werte, die anzeigen, ob es sich um eine 'Liste von Noah' handelt oder nicht. Dies muss nicht unbedingt ein wahrer / falsey- Wert sein, es könnte sich also auch um 0
/ 1
in Java / C # handeln oder 'A'
/'B'
in einer beliebigen Sprache handeln, um einige Beispiele zu nennen.
Wann ist eine Liste eine 'Liste von Noah'? Wenn genau zwei von jeder Ganzzahl in der Liste sind.
Herausforderungsregeln:
- I / O ist flexibel. Die Eingabe kann eine Liste / ein Array / ein Datenstrom aus Ganzzahlen / Gleitkommazahlen / Zeichenfolgen sein oder einzeln aus STDIN gelesen werden. Die Ausgabe kann zwei verschiedene sein Werten bestehen, die von einer Funktion oder einer Ausgabe an STDOUT / a-Datei zurückgegeben werden.
- Die Ganzzahlen in der Eingabeliste sind in zufälliger Reihenfolge und es wird garantiert, dass sie im Bereich 1 ≤ n ≤ 100000 positiv sind .
- Die Eingabeliste ist garantiert nicht leer.
- Wenn über 2 ein ganzzahliges Vielfaches von 2 vorliegt (dh 4, 6, 8 usw.), ist dies falsch. Dh
[6,4,4,6,4,7,4,7]
ist Falsey, obwohl Sie noch gleiche Paare wie diese schaffen könnte:[[4,4],[4,4],[6,6],[7,7]]
.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Truthy:
[7,13,9,2,10,2,4,10,7,13,4,9]
[1,2,3,1,2,3]
[10,100,1000,1,100,10,1000,1]
[123,123]
[8,22,57189,492,22,57188,8,492,57188,57189,1,1]
Falsey:
[6,4,4,6,4,7,4,7]
[2,2,2,2,2,2]
[5,1,4,5,1,1,4]
[77,31,5,31,80,77,5,8,8]
[1,2,3,2,1]
[44,4,4]
[500,30,1]
[1,2,1,1]
[2,4,6,4,4,4]
[2,23,34,4]
[2,23,3,3,34,4]
quelle
Antworten:
Python 3 , 31 Bytes
Probieren Sie es online!
Python 2 , 33 Bytes
Probieren Sie es online!
quelle
05AB1E , 4 Bytes
Probieren Sie es online! oder als Testsuite
Erläuterung
quelle
¢2QP
, aber die VerwendungΘ
ist auch eine schöne Alternative. :){ιË
, aber das schlägt natürlich fehl, wenn ganze Zahlen viermal auftreten.Brachylog , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
R , 20 Bytes
-6 Bytes dank digEmAll durch Änderung der Eingabemethode
Probieren Sie es online!
Gibt aus,
FALSE
ob es sich um eine Liste von Noah handelt, undTRUE
andernfalls. Funktioniert für jeden Eingabetyp, nicht nur für ganze Zahlen.Berechnet die Anzahl der einzelnen Werte in der Liste und prüft, ob sich die Anzahl von 2 unterscheidet.
quelle
APL (Dyalog Extended) , 5 Byte SBCS
Probieren Sie es online!
Ist es wahr dass…
2¨
zwei für jedes Element≡
ist identisch mit⍧⍨
das Count-In Selfie (Zählung der eigenen Elemente im Selbst)?
quelle
C # (Visual C # Interactive Compiler) ,
39, 32 ByteVielen Dank an @Expired_Data
Probieren Sie es online!
quelle
Haskell , 33 Bytes
Probieren Sie es online!
Für jedes Element der Eingabe stellen wir sicher, dass es zweimal in der Eingabeliste angezeigt wird.
sum[1|b<-x,b==a]
ist nur eine Golfspielerversion vonlength(filter(==a)x)
.quelle
Perl 6 , 18 Bytes
Probieren Sie es online!
.Bag
wandelt die Eingabeliste in eineBag
--a Menge mit Multiplizität um.{*}
extrahiert alle Multiplizitäten..all
schafft eine Verknüpfung der Multiplizitäten.== 2
ergibt eine andere und-Verknüpfung von Booleschen Werten, die jeweils wahr sind, wenn die Multiplizität 2 ist.so
Reduziert die Junction auf einen einzelnen Booleschen Wert.quelle
J , 10 Bytes
Probieren Sie es online!
quelle
[:*/2=1#.=
Ich möchte diese Kappe wirklich entfernen, kann aber nicht herausfinden, wie.2*/@:=1#.=
auch 10 Bytes tun@:
hier ist es praktisch.=
, so seltsam nützlich in Nischen-Golf-SzenarienMS SQL Server 2017 ,
152150146 BytesDie lesbare Version:
Probieren Sie es auf SQL Fiddle !
-2 Bytes dank Kevin Cruijssen
quelle
c
entfernt werden, da Sie den Alias nicht verwendenCOUNT(*)
?Haskell ,
6145 BytesProbieren Sie es online!
Vielen Dank an @KevinCruijssen für 12 Bytes und @nimi für weitere 4 Bytes.
Erste Antwort von Haskell, aber es war überraschend einfach. Kann
wahrscheinlichviel golfen werden. Ein typisches Beispiel ...quelle
all(True==).map(2==)
kannall(2==)
. :)length
zuall
:all((2==).length).group.sort
. Es ist nicht erforderlich, der Funktion einen Namen zu gebenf=
.all(2==)
beim Testen in GHCi übersehen. Danke Kevin und Nimi, ich aktualisiere die Antwort.all(True==)
istand
.JavaScript (ES6), 37 Byte
Gibt für Noah false oder für Nicht-Noah true zurück .
Probieren Sie es online!
Kommentiert
quelle
APL (Dyalog Unicode) , 8 Byte SBCS
Anonyme implizite Präfixfunktion. Rückgabe
0
/1
.Probieren Sie es online!
…
⌸
Rufen Sie für jeden Wert als linkes Argument und die Indizes des Vorkommens dieses Werts als rechtes Argument auf:≢
Berechnen Sie das rechte Argument (die Vorkommen)∘
und⊢
geben Sie es zurück. Ignorieren Sie das linke Argument2=
Boolesche Liste, die angibt, welche Zahlen 2 sind∧/
UND-Verknüpfung (dh sind sie alle wahr?)quelle
PowerShell ,
663726 Bytes-11 bytes dank mazzy
Probieren Sie es online!
Gruppen bis
$l
und packt alle die Grafen von passenden Werten. Anschließend werden alle Zählungen von 2 aus dieser Liste herausgefiltert. Wenn die Liste leer ist, ist es eine Noah-Nummer. Andernfalls wird es immer noch mit Zählungen ungleich 2 gefüllt.True
Wird die Liste nicht angezeigt, ergibt sich, wenn sie leer und mitFalse
Daten gefüllt istquelle
group
PHP , 60 Bytes
Probieren Sie es online!
PHP hat großartige eingebaute Funktionen, obwohl es mit 20 Zeichen
array_count_values()
kein besonders Golfspiel ist.quelle
Mathematica,
2524 BytesProbieren Sie es online!
Die
Tally
Funktion gibt eine Liste des Formulars zurück , die dann mit einem Muster abgeglichen wird, das prüft, ob alle Zähler 2 sind.{{element, count}, ...}
quelle
Attache , 16 Bytes
Probieren Sie es online!
Erläuterung
Alternativen
17 Bytes:
{All&_!`=&2@`~&_}
18 Bytes:
{All[`=&2@`~&_,_]}
23 Bytes:
Same@2&`'@Sum@Table[`=]
25 Bytes:
Same«2'Sum@Table[`=,_]»
25 Bytes:
Same<~2'Sum@Table[`=,_]~>
25 Bytes:
{Same[2'Sum@Table[`=,_]]}
35 Bytes:
{Commonest@_==Unique@_and _[0]~_=2}
quelle
TI-Basic, 47 Bytes
Ich bin ein großer Fan von TI-Basic. Es ist keine großartige Sprache für wirklich jeden Zweck, aber ich programmiere (und spiele) gerne darin.
Wie funktioniert dieser Code?
Zunächst wird die Liste sortiert.
Zweitens wird die Funktion function List verwendet, um eine weitere Liste zu erstellen, die den Unterschied zwischen den Elementen der sortierten Liste darstellt. (Zum Beispiel würde △ List ({1,3,7,8}) {2,4,1} ergeben). Gilt nicht für diese Liste, bei der jedes Nicht-Null-Element der Liste in Null und jede Null in Eins konvertiert wird.
Anschließend prüft das Programm, ob die resultierende Liste zum Muster passt
{1, 0, 1, 0, ...}
ist nur dann der Fall, wenn es sich bei der ursprünglichen Liste um eine Noah-Liste handelt.Es gibt auch eine zusätzliche Überprüfung, ob die Länge der Liste gerade ist, um einige Randfälle zu erfassen.
Hier sind einige Screenshots von Testfällen:
quelle
Julia 1.0 , 32 Bytes
Probieren Sie es online!
Dividiert jedes Element des Eingabearrays
l
durch die Transponierte undl'
ergibt eine Matrix. Das Summieren über diese Matrix beim Anwendenisone
auf jedes Element ergibt die doppelte Länge, alsl
wenn jedes Element genau zweimal erscheint.quelle
K (ok) , 9 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
quelle
Julia ,
30 Zeichen26 BytesDanke, H.PWiz für diesen Trick!
Probieren Sie es online!
quelle
!a=all(x->2==sum(a.==x),a)
für 26 Bytes haben. NB. Ich empfehle, auf dieser Site in Bytes zu zählen!
für anonyme Funktionen verwenden könnenGelee , 5 Bytes
Probieren Sie es online!
Ein monadischer Link, der eine Liste von Ganzzahlen aufnimmt und 1 zurückgibt, wenn es sich um eine Noah-Liste handelt, und 0, wenn dies nicht der Fall ist.
quelle
VDM-SL , 64 Bytes
Erläuterung
VDM funktioniert überwiegend wie logische Anweisungen zweiter Ordnung.
Da Sie TIO VDM nicht verwenden können, erfolgt hier die Ausgabe einer Debug-Sitzung
quelle
Elixier , 52 Bytes
Probieren Sie es online!
Komplette Elixir noob hier :-D.
quelle
MATL , 6 Bytes
Probieren Sie es online!
0 für wahr, 1 für falsch. Portiert die Antwort von Robin Ryder .
MATL , 6 Bytes
Probieren Sie es online!
1 für wahr, 0 für falsch. Ports Luis Mendos Antwort .
quelle
Ruby , 29 Bytes
Probieren Sie es online!
quelle
Kotlin ,
96776951 BytesProbieren Sie es online!
quelle
Excel, 45 Bytes
Nimmt Daten in Spalte A an, wobei diese in einer anderen Zelle als einer in Spalte A eingegeben werden. Gibt TRUE zurück, wenn Paare vorhanden sind, und FALSE, wenn sie nicht mit Paaren übereinstimmen
Es wurde versucht, die / 2 zu entfernen und .5 für die Summierung hinzuzufügen, aber das hat nicht funktioniert.
Versucht, die Frequenzen zu zählen, die <> 2 sind, und dies ergab nicht den richtigen Betrag.
quelle
Oktave / MATLAB,
2221 BytesAnonyme Funktion, die einen numerischen Vektor eingibt und ausgibt,
0
ob der Vektor die Bedingung erfüllt oder1
nicht.Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
Bash , 26 Bytes
Der Exit-Code ist ungleich Null, wenn die Liste von Noah ist.
Probieren Sie es online!
quelle