Herausforderung:
Eingang:
Zwei ganzzahlige Parameter a
und b
(wobei a<b
und der Unterschied mindestens 2 beträgt)
Ausgabe:
Diesen Text ausgeben oder zurückgeben, wo a
und b
ausgefüllt:
(a,b) = ]a,b[ = {a<x<b} = {a<x&&x<b} = a+1..b-1
[a,b) = [a,b[ = {a<=x<b} = {a<=x&&x<b} = a..b-1
(a,b] = ]a,b] = {a<x<=b} = {a<x&&x<=b} = a+1..b
[a,b] = [a,b] = {a<=x<=b} = {a<=x&&x<=b} = a..b
Herausforderungsregeln:
- I / O ist flexibel. Kann nach STDOUT gedruckt, als String / Zeichen-Array zurückgegeben usw. Kann als zwei Ganzzahlen, Dezimalzahlen, Strings eingegeben werden (nicht sicher warum, da Sie das
a+1
und berechnen müssenb-1
, aber mein Gast sein müssen ..) usw. - Es sind beliebig viele führende und / oder nachfolgende neue Zeilen und beliebig viele nachfolgende und / oder nachfolgende Leerzeichen für jede Zeile zulässig.
- Die Leerzeichen an den Gleichheitszeichen (einschließlich derer, mit denen sie in derselben Spalte ausgerichtet werden) sind obligatorisch, Leerzeichen zwischen den anderen Zeichen sind nicht zulässig.
a+1
undb-1
werden nach diesen Berechnungen durch die korrekten Werte ersetzt.- Sie dürfen
≤
statt nicht verwenden<=
. - Sie dürfen
&
statt nicht verwenden&&
. - Sie dürfen die Zahlen mit ausgeben
.0
(solange es konsistent ist und nicht mehr als eine Dezimalnull). - Sie können davon ausgehen, dass
a
mindestens 2 niedriger sind alsb
(um(a,b)
korrekt zu sein). - Die Zeilen sollten in der angegebenen Reihenfolge ausgegeben werden.
Beispiel:
Eingabe: a=-5, b=10
Ausgabe:
(-5,10) = ]-5,10[ = {-5<x<10} = {-5<x&&x<10} = -4..9
[-5,10) = [-5,10[ = {-5<=x<10} = {-5<=x&&x<10} = -5..9
(-5,10] = ]-5,10] = {-5<x<=10} = {-5<x&&x<=10} = -4..10
[-5,10] = [-5,10] = {-5<=x<=10} = {-5<=x&&x<=10} = -5..10
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. 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.
- Fügen Sie ggf. auch eine Erklärung hinzu.
PS: Für diejenigen, die diese Herausforderung in der Sandbox gesehen hatten, als es noch eine Herausforderung mit kolmogorov-Komplexität wara
und die hartcodiert warb
, habe ich sie in eine Eingabe-Herausforderung geändert, um zu verhindern, dass langweilige, hartcodierte und codierte Antworten auftreten, wie wir sie normalerweise kennen KC-Herausforderungen.
a=5, b=6
noch zur Ausgabe(5,6) = ... = 6...5
?a
undb
immer mindestens 2 voneinander entfernt sind. Ich werde die Herausforderung bearbeiten.Antworten:
Stax , 74 Bytes
Führen Sie es aus und debuggen Sie es
Dabei werden die Zeichenfolgenvorlagen von stax in hohem Maße verwendet. Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
JavaScript (ES6),
184182181180 BytesÜbernimmt Eingaben in der Currying-Syntax
(a)(b)
. Gibt ein Array mit 4 Zeichenfolgen zurück.Probieren Sie es online!
Wie?
Für jede Zeile k mit 1 ≤ k ≤ 4 beginnen wir mit der folgenden Vorlage:
und ersetze jede Dezimalstelle n an der Stelle i gemäß der folgenden Tabelle:
quelle
Python 2 ,
225203195 BytesProbieren Sie es online!
quelle
Python 2 , 187 Bytes
Probieren Sie es online!
quelle
Java (JDK 10) , 251 Byte
Probieren Sie es online!
Credits
quelle
.replace
.Perl 5 , 181 Bytes
Ich dachte, das hätte viel kürzer geklappt ...
Probieren Sie es online!
Erläuterung
Ursprünglich wurde hier eine
printf
Formatzeichenfolge verwendet, aber in Kombination mit hattes
undd
war sie nur kürzers///
.Zuerst wird das Format - String ist eingebaut in
$_
und vervierfacht, dann werden alles
sind s mit den entsprechenden Halterung, ersetzt<
,<=
oder Räume, in Abhängigkeit von der Ersatzindex. Ich hatte gehofft, mit der Verdopplung der letzten 5 Zeichen jedes Blocks noch ein paar Bytes zu sparen, aber dies führte letztendlich nur zu einer Einsparung von 2 Bytes. Die resultierende Zeichenfolge wird in Elemente von Leerzeichen<=
oder einzelne Zeichen aufgeteilt.Schließlich werden alle
d
s durch die gewünschte Nummer ersetzt, die anhand des Index der aktuellen Ersetzung über einen Hash-Schlüssel angepasst wird.quelle
JavaScript,
190189 BytesProbieren Sie es online aus
quelle
m4 , 194
Scheint ein Job für einen Makroprozessor zu sein. Ich bin mir nicht sicher, ob m4 unseren Standards für eine Programmiersprache entspricht. Es hat Looping-Fähigkeit und arithmetische Bewertung, also gehe ich davon aus, dass es nahe an der Marke liegt.
Dies ist mein erster nicht-trivialer Blick auf m4, daher vermute ich, dass ich mehr Möglichkeiten zum Golfen verpasst habe.
Eingaben werden mithilfe von
-D
Makrodefinitionen in der Befehlszeile übergeben. Ich bin mir nicht sicher, ob irgendetwas zum Score hinzugefügt werden muss, soweit ich das beurteilen kann, ist dies die einzige Möglichkeit, Parameter sinnvoll zu übergeben:Probieren Sie es online aus .
Vielen Dank an @Dennis, dass Sie m4 so schnell zu TIO hinzugefügt haben !
quelle
-D
Argumente angeht ist es völlig in Ordnung. In meiner Herausforderungsbeschreibung habe ich angegeben, dass E / A vollständig flexibel ist. Unabhängig davon, ob Sie Eingaben als STDIN, Funktionsparameter, Programmbefehlszeilenargumente, Compiler-Flags, Lesen einer Datei oder eine andere Eingabemethode vornehmen, ist dies vollständig wie du willst.Python 2 ,
277199193189 BytesProbieren Sie es online!
quelle
2*('{%d<%s<%s%d} %s= '%(a,e*x+'%sx',e[y:],b,i/2*' '))%('','x&&')
->2*('{%d<%s%%sx<%s%d} %s= '%(a,e*x,e[y:],b,i/2*' '))%('','x&&')
spart zwei :)Excel, 399 Bytes
Nichts besonders Interessantes hier.
quelle
C (gcc) , 224
237BytesProbieren Sie es online!
Durch das Verschieben von "<[=]" in die Formatzeichenfolge konnte ich das Array vollständig entfernen. Beim Bewegen
printf()
in diefor
Schleife wurde auch ein Semikolon gespeichert.Ursprüngliche Antwort
Probieren Sie es online!
Hier gibt es nichts Besonderes: Ich habe die Größe der Funktion mit den üblichen Tricks geändert (
int
Autos in den Funktionsheader einfügen, K & R-Stil verwenden, in Zeichenfolgenkonstanten indizieren) Array erwies sich als größeneffizienter als das Einfügen eines Formatspezifizierers für diese Herausforderung, da es mehrmals verwendet wurde.quelle
Javascript,
273258232 BytesVielen Dank an Kevin Cruijssen, der mir 15 Bytes gespart hat!
Probieren Sie es online aus
Vielen Dank für TFeld, dass Sie mir diese Idee gegeben haben und etwa 60 Byte meiner ursprünglichen Antwort eingespart haben.
Ungolfed:
Javascript (ursprüngliche Antwort), 340 Bytes
quelle
{a<=x&&\nx<=b}
sollte nicht da sein, und Sie vermissen die erste(a,b) =
. Was das Golfen angeht: Statt Alarm können Sie auch nur das Ergebnis zurückgeben.(m)=>
kann seinm=>
.(e,f)=>
kann seine=>f=>
. Und Sie können verwendeng
direkt die statt der Schaffunglet g=
:m=>{return{a:e,b:f,c:e+1,d:f-1}[m]}
. Versuchen Sie es online 258 Bytes . Und wahrscheinlich kann mehr Golf gespielt werden, ich bin nicht so geschickt in JS ..(m)->
zum->
;(e,f)->
zue->f->
, undvar g=new int[]{...}return g[m]
zureturn new int[]{...}[m]
. ;) Außerdem bin ich jetzt seit etwas mehr als zwei Jahren auf diesem SO aktiv, also habe ich gesehen, dass JS-Antworten diese Art von Dingen auch schon verwendet haben.Netzhaut , 216 Bytes
Probieren Sie es online! Erläuterung:
Bauen Sie den Hauptteil des Ergebnisses auf.
Wenn die Variable an einer losen Ungleichung beteiligt ist, ist der Wert inklusive, sodass wir den Platzhalter löschen können.
Wandle den Wert in unary um und addiere 2.
Entfernen Sie den Platzhalter für eine strengere untere Ungleichung oder eine negative strengere obere Ungleichung. Es wurden noch 2 hinzugefügt, aber 1 wird später abgezogen, um das gewünschte Ergebnis zu erzielen.
Subtrahieren Sie 2 von den anderen strengen Ungleichungen ungleich Null und stellen Sie den ursprünglichen Wert wieder her, von dem 1 später subtrahiert wird.
Ändern Sie eine strikte obere Ungleichung von
0
bis-1
.Subtrahieren Sie 1 von den verbleibenden strengen Ungleichungen und konvertieren Sie sie in Dezimalzahlen.
Repariere einen anderen Randkasten.
quelle
Python 3, 180 Bytes:
Erläuterung
Baut im Grunde genommen einen F-String auf, der in einem Listenverständnis ausgewertet wird. Die
%
String-Interpolation alten Stils wird verwendet, um die Auswertung der Ausdrücke zu verzögern, bis der f-String ausgewertet wird.Der erste Teil der Zeichenfolge, 'f "', wird zum Präfix für die f-Zeichenfolge.
Der zweite Teil der Zeichenfolge erstellt die Formatzeichenfolge für die ersten beiden Intervallausdrücke.
%r
wird verwendet, um zu sparen, dass Anführungszeichen im Format eingegeben werden müssen, dh"{%r[j]}"
ist dasselbe wie"{'%s'[j]}"
. Wenn die f-Zeichenfolge ausgewertet wird, wird die richtige Klammer ausgewählt.Der dritte Teil der Zeichenfolge erstellt die nächsten beiden Intervallausdrücke.
Der letzte Teil formatiert den "a..b" -Teil der f-Zeichenfolge.
Die zusammengesetzte F-Saite sieht wie folgt aus:
f"{'(['[j]}{a},{b}{')]'[i]} = .... = {a+j}..{b-i}"
Wenn die f-Zeichenfolge ausgewertet wird, werden alle Ausdrücke in geschweiften Klammern
{}
durch ihren Wert ersetzt. So{a}
wird durch den Wert ersetzta
, und{'(['[j]}
wird ersetzt durch ,(
wenn j = 0 oder[
wenn j 1.quelle
SOGL V0.12 , 110 Bytes
Probieren Sie es hier aus!
quelle
Python 3, 248 Bytes
Probieren Sie es online!
quelle