Inspiriert von einem alten Handbuch ...
Die Herausforderung
Ich definiere den a- ten Suffixvektor von b als die boolesche Liste der Länge a mit b nachgestellten Wahrheitswerten.
Schreiben Sie ein Programm oder eine Funktion, die bei gegebenem a und b auf irgendeine Weise den a- ten Suffixvektor von b zurückgibt .
Nun mag dies trivial erscheinen, aber hier ist der Haken: Ihre Punktzahl ist die Byteanzahl plus das früheste Jahr, in dem Ihre Lösung funktioniert hätte.
Regeln
Es gelten alle Standardregeln, mit Ausnahme der Sprachen und Sprachversionen, die nach dieser Herausforderung veröffentlicht wurden.
Ausgabe unter Verwendung der in Ihrer Sprache verwendeten Darstellung von Booleschen Werten, z. B. 1
/ 0
, True
/ False
, TRUE
/ FALSE
, "True"
/ "False"
usw.
Ausgabe mit was auch immer Darstellung von Listen , dass Ihre Sprache Anwendungen, zum Beispiel 0 0 1
, [False,False,True]
, (FALSE;FALSE;TRUE)
, {"False","False","True"}
etc.
Sie können davon ausgehen, dass a ≥ b immer wahr ist und dass sie einen geeigneten Datentyp haben.
Testfälle
Bei a = 7 und b = 3 kehren Sie zurück0 0 0 0 1 1 1
Bei a = 4 und b = 4 kehren Sie zurück[True,True,True,True]
Geben Sie a = 2 und b = 0 zurück(FALSE;FALSE)
Geben Sie a = 0 und b = 0 zurück{}
Beispiellösung und Wertung
Ich möchte die Lösung möglicherweise {⌽⍺↑⍵⍴1}
mit Dyalog APL einreichen. Das wäre eine Bytecount von 8. Dies ist eine dynamische Funktion, die ab der 1998 veröffentlichten Version 8.1 von Dyalog APL funktioniert. Meine Gesamtpunktzahl ist also 2006. Meine eingereichte Antwort sollte ungefähr so aussehen:
# Dyalog APL 8.1, 1998 + 8 = 2006
{⌽⍺↑⍵⍴1}
Optional explanation...
Recommended: Link to documentation showing when the features you used were released.
Die niedrigste Punktzahl gewinnt!
quelle
Antworten:
APL \ 360, 1968 + 3 Bytes = 1971
Ein aus dem Tutorial @NBZ eingebauter Link zu. Ich weiß nicht , warum @NBZ sagte , es 1970 punkten würde, weil APL \ 360 nicht bis 1968 durchgeführt wurde, und früher APLs wie APL \ 1130 hat noch keine Suffix Vektorfunktion hat (siehe Seite 208 von hier ).
quelle
Viertens 1970 + 38 = 2008
Verwendung:
7 3 s
druckt "0 0 0 0 -1 -1 -1"quelle
sv
und nichts
, oder etwas anderes, ein Byte?APL, 1968 + 5 = 1973
Bis zu 5 Zeichen:
Ältere Version:
Nun, Sie haben die Antwort tatsächlich bereits gegeben. Ich habe gerade die dynamische Funktionsdefinition entfernt und überprüft, ob diese im Jahr 1968 funktioniert. Als Referenz dient hier das Handbuch:
http://www.softwarepreservation.org/projects/apl/Books/APL360ReferenceManual
quelle
SAS, 1966 + 45 = 2011
Zeit für SAS zu glänzen!
SAS wurde erst 1972 veröffentlicht, aber dieser Datenschritt verwendet nur sehr grundlegende Funktionen, von denen ich ziemlich sicher bin, dass sie auch in den frühesten Vorabversionen ab 1966 verfügbar waren. Ich glaube, dass sie dann funktioniert haben. Die Eingabe erfolgt nach
a=
undb=
, und die Ausgabe wird in das Protokoll geschrieben.Ich würde mich wundern, wenn noch jemand ein IBM System / 360 mit der richtigen SAS-Version hätte, um dies zu überprüfen!
quelle
Mouse-1979 , 1979 + 19 = 1998
Übersetzung von: Forth .
Die Spezifikation ist wirklich kryptisch für mich, aber ich denke, das macht das Richtige.
quelle
&Tuck
erst in der Version 2002 verfügbar war. Und die Schleifen scheinen unendlich zu sein.TI-Basic, 1990 + 21 = 2011
Der erste TI-Rechner, mit dem dieses Programm arbeitet, ist der TI-81, der 1990 eingeführt wurde.
Edit: habe festgestellt, dass ich eine leere Liste unterstützen muss ... Code um 4 Bytes erhöht
Testfälle
quelle
Ans
eine akzeptable Ausgabemethode zurückzukehren, es sei denn, diese wird gedruckt.Prompt
undseq(
sind ein Byte Token und die anderen Zeichen sind jeweils ein Byte.Ans
ist die Standardmethode, um einen Wert in der TI-83-Serie Basic zurückzugeben. Wenn ein Programm ausgeführt wird, wird die letzte Zeile außerdem automatisch gedruckt. Sie haben also das Beste aus beiden Welten.Mathematica 1.0, 1988 + 22 Bytes = 2010
Ich bin mir nicht sicher, ob dies funktioniert. Ich habe gerade die Dokumentation zu 10.3 durchgesehen und nach Dingen gesucht, die besagten, dass sie 1988 eingeführt wurden (1.0).
quelle
/.
und->
,Array
68.000 TI-Basic, 1995 + 25 = 2020
Der erste TI-Rechner, mit dem dieses Programm arbeitet, ist der 1995 eingeführte TI-92.
Im Gegensatz zur TI-83-Serie unterstützt 68k TI-Basic die leere Liste.
quelle
Prompt
ist : Ist in einer Funktion ungültig und ein Programm kann keinen Wert zurückgeben. Dies muss also auf dem Startbildschirm eingegeben werden.define f(a,b)=seq(x>a-b,x,1,a)
Definiert andererseits eine gültige Funktion, für die a und b als Argumente angegeben werden können. (Geprüft an meinem TI-92 vom 13.09.1995)define
und Aufrufen vonf(2,1)
oder ähnlichem zum Tokenisieren beträgt die vom Betriebssystem gemeldete Größe 25 Byte.Python 1.0, 1994 + 26 = 2020
2 Bytes dank DSM gespart.
Lambda wurde mit der ersten Hauptversion 1.0 eingeführt
quelle
MATL , 2015 + 1 + 4 = 2020
Dies funktioniert seit Version 6.0.0 der Sprache (sie verwendet implizite Eingaben, die in dieser Version eingeführt wurden) vom 31. Dezember 2015.
Ich habe hinzugefügt
1
die Punktzahl gemäß @drolex-Kommentar zu möglicherweise verschiedenen Gebietsschemas .Probieren Sie es online!
Erläuterung
quelle
J, 1990 + 8 = 1998
Argh. Ich habe diese Antwort recherchiert und jemand ist zu APL gekommen, bevor ich hoffen konnte, die Sprache zu verstehen. Hier ist stattdessen meine J-Lösung.
quelle
Prolog, 1972 + 57 = 2029
Verbrauch:
a(7,3,L).
vereinheitlichtL
mit vereinigt[0,0,0,0,1,1,1]
.Ich bin mir wirklich nicht ganz sicher, wann
is
es in der Sprache implementiert wurde, und ich bezweifle, dass Sie das genaue Datum tatsächlich finden können. Es ist ein ziemlich grundlegendes eingebautes Programm, daher nehme ich an, dass es bereits existierte, als die Sprache 1972 zum ersten Mal erschien .Nicht dass es wirklich wichtig wäre, ich bin weit davon entfernt, mit dieser Antwort zu gewinnen.
quelle
SMP , 1983 + 28 Bytes = 2011
Ich glaube, ich habe das richtig verstanden ...
S
: 2.10, Seite 48Ar
: 7.1, Seite 102Map
: 7.2, Seite 106$1
: 7.1, Seite 104Und wenn Sie mit Mathematica vertraut sind, nein,
Ar
nicht funktioniert wie das . Eher wieRange
+Select
.quelle
(#>x&/.x->#)/@Range[#+#2]&
in Mathematica(#>x&/.x->#-#2)/@Range[#]&
Vim, 1991 + 21 = 2012
Die Eingabe sieht folgendermaßen aus:
Und die Ausgabe sieht so aus:
Erläuterung:
quelle
B , 1971 + 54 = 2025
Das Handbuch für diesen typenlosen C-Vorläufer finden Sie unter " Der Verweis des Benutzers auf B ".
quelle
Pyth, 2015 +
94 =20242019Vielen Dank an @FryAmTheEggman für seine Hilfe!
Probieren Sie es hier aus!
Erläuterung
quelle
> <> , 2009 + 14 + 3 für -v = 2026
b
unda
sollte direkt auf dem Stapel-v
in umgekehrter Reihenfolge bereitgestellt werden.Die Ausgabe ist nicht wie in den Beispielen durch Leerzeichen getrennt, aber dies scheint keiner festgelegten Regel zu widersprechen. Es verwendet 0 und 1, um falsch und wahr zu repräsentieren, wie es von der Sprache verwendet wird.
Es funktioniert nicht mit der aktuellen Version, da
?
jetzt der Testwert vom Stack abgerufen wird.Ich bin mir nicht sicher, ob jedes Feature von Tag 1 an implementiert wurde,
-v
zum Beispiel hätte es später als Ware bereitgestellt werden können. Ich werde versuchen, sicherzustellen, dass meine Antwort an diesem Wochenende richtig ist.quelle
05AB1E , 2016 + 9 = 2025
Dies kann definitiv weiter golfen werden, aber hier ist ein Anfang: p. Code:
Probieren Sie es online! Die Eingabe erfolgt als b, a .
Auch 9 Bytes
0×1I×0ñRS
.quelle
°
es schon 2016?)PowerShell v1, 2006 + 28 = 2034
Verwendet den Komma-Operator , um die Arrays zu erstellen, die sich seit Beginn in PowerShell befinden.
quelle
Mathcad, 1998 + 42 = 2040
"Bytes" werden als Anzahl unterschiedlicher Tastaturzeichen interpretiert (z. B. "for" -Operator (einschließlich einer Programmierzeile) ist ein einzelnes Zeichen ctl-shft- # oder ein Klick auf die Programmiersymbolleiste).
Bei der obigen Byteanzahl wird davon ausgegangen, dass die Definitionen a und b nicht zur Gesamtsumme zählen. Fügen Sie 4 Byte für Definitionen hinzu, wenn diese Annahme ungültig ist.
Die unten gezeigte Funktionsversion fügt 5 Bytes für die Definition und weitere 3 Bytes für jede Verwendung hinzu (vorausgesetzt, die a- und b-Werte werden direkt eingegeben).
Da meine Mathcad-Lösung eindeutig die roten Tees und nicht die der Konkurrenz ausspielen sollte, habe ich eine Tabelle mit Lösungen hinzugefügt. Da Mathcad kein leeres Array hat, habe ich stattdessen eine leere Zeichenfolge ("") verwendet. Ich habe 0 verwendet, um anzugeben, wo ich die b> a-Paare nicht berechnet habe.
quelle
PHP, 1995 + 56 Bytes = 2051
Explosionszeichnungquelle
Javascript ES6, 2015 + 46 = 2061
Gibt ein Array von 0 und 1 zurück
Javascript ES6, 2015 + 50 = 2065
Gibt eine Zeichenfolge aus
0
und1
Zeichen zurückJavascript, 1995 + 61 = 2056
Gibt eine Zeichenfolge aus
0
und1
Zeichen zurückquelle
k ( kona ), 1993 + 15 = 2008
Erstellt eine Liste von b True-Werten und verknüpft sie mit einer Liste von (ab) False-Werten.
quelle
R , 20 Bytes + 1993 = 2013
Probieren Sie es online!
Möglicherweise könnte dies in S funktionieren, was die Punktzahl auf 2008 senken würde, aber ich konnte es nicht verifizieren.
quelle
SmileBASIC 3, 2014 + 25 = 2039
Die erste öffentlich verfügbare Version von SmileBASIC 3 wurde in Japan mit der SmileBASIC-App für Nintendo 3DS im November 2014 eingeführt.
Gibt eine Zeichenfolge aus, bei der 0 falsch und 1 wahr ist (wie in der Sprache selbst).
quelle