Was bekommen Sie, wenn Sie 6 mit 9 multiplizieren? (42)


60

Ich liebe Mathe. Aber ich kann keinen einzigen Taschenrechner finden, der sich korrekt multiplizieren kann. Sie scheinen alles richtig zu machen, außer 6 * 9 (Es ist die Frage des Lebens, des Universums und alles! Wie konnten sie das falsch machen ?!). Ich möchte, dass Sie alle eine Funktion für mich schreiben, die 2 Zahlen korrekt multiplizieren kann (und 6 * 9 entspricht 42 statt 54. 9 * 6 entspricht 54 noch).

Oh, und ich muss die Quelle in Minecraft bauen, damit nur wenige Bytes gewinnen!

Rekapitulieren

  • Nehmen Sie 2 Zahlen als Eingabe (Typ spielt keine Rolle, aber es werden nur 2 Elemente übergeben, und die Reihenfolge muss konsistent sein. Daher sind Streams und Arrays in Ordnung, solange sie die Reihenfolge beibehalten, in der sie übergeben wurden. Dh, eine Karte hat gewonnen funktioniert nicht, weil es die Reihenfolge nicht beibehält)
  • Gib ein Vielfaches beider Zahlen aus, außer wenn sie 6 und 9 sind, dann gib 42 aus (Reihenfolge ist wichtig!)
    • PS. Ich habe nie wirklich gut gezählt, daher denke ich, dass nur Ganzzahlen von 0 bis 99 reelle Zahlen sind (der verwendete Typ spielt keine Rolle).
  • Nur wenige Bytes pro Sprache gewinnen!

Bestenliste:


1
@ JonathanAllan Ja, Regeln hinzugefügt.
Tezra

73
Zufälligerweise enthält die Fragen-ID 42zweimal.
Erik der Outgolfer

1
Wenn nur ganze Zahlen bis zu 99 reelle Zahlen sind, dann ist zB 9 * 11 eine gültige Eingabeaufforderung, aber 10 * 10 nicht, oder?
der dunkle Wanderer

14
@EriktheOutgolfer… und die 12 steht für was zu subtrahieren ist, wenn die Eingabe 6 und 9 ist.
Adám

11
@EriktheOutgolfer Auch wenn Sie die ID rückwärts lesen.
T. Sar - Reinstate Monica

Antworten:


65

Mathematica, 15 Bytes

Die Byteanzahl setzt die Windows-ANSI-Codierung (CP-1252) voraus.

6±9=42
±n__:=1n

Definiert einen binären Operator ±, der das Problem löst. Wir definieren einfach 6±9=42als einen Sonderfall, der Vorrang hat, und fügen dann eine Fallback-Definition hinzu, die der ±Multiplikation gleichkommt. Letzteres verwendet einen ziemlich interessanten Golftrick. Der Grund, warum dies funktioniert, ist ziemlich aufwändig und wir müssen uns Sequenzen ansehen . Eine Sequenz ähnelt dem, was in anderen Sprachen als Splat bezeichnet wird. Es ist im Grunde genommen eine "Liste" ohne Umhüllung. ZB f[1, Sequence[2, 3, 4], 5]ist das wirklich gerecht f[1, 2, 3, 4, 5]. Das andere wichtige Konzept ist, dass alle Operatoren nur syntaktischer Zucker sind. Insbesondere ±kann sie als unärer oder binärer Operator verwendet werden und den Kopf darstellen PlusMinus. So ±xist PlusMinus[x]und a±bist PlusMinus[a,b].

Jetzt haben wir die Definition ±n__. Dies ist eine Abkürzung zum Definieren PlusMinus[n__]. Stellt aber n__eine beliebige Folge von Argumenten dar. Dies fügt also tatsächlich eine Definition für die binäre (und n-fache) Verwendung von hinzu PlusMinus. Der Wert dieser Definition ist 1n. Wie multipliziert dies die Argumente? Nun, 1nverwendet die implizite Multiplikation von Mathematica durch Nebeneinanderstellung, so dass es äquivalent zu ist 1*n. Ist *aber auch nur Abkürzung für Times[1,n]. Nun nist Folge von Argumenten. Wenn wir also aufrufen, a±bwird dies tatsächlich so Times[1,a,b]. Und das ist nur so a*b.

Ich denke, es ist ziemlich ordentlich, wie dieser Syntaxmissbrauch es uns ermöglicht, einen binären Operator mit unärer Syntax zu definieren. Wir könnten jetzt sogar PlusMinus[2,3,4]rechnen 24(was auch als ±##&[2,3,4]oder geschrieben werden kann, 2±Sequence[3,4]aber an diesem Punkt wird es einfach verrückt).


Mir gefällt besonders, dass dies im Grunde ein Patch für meinen 'Taschenrechner' ist: 3 Funktioniert dies zum Spaß auch für *? : 3
Tezra

3
@Tezra *ist ein eingebauter Operator, daher müsste Unprotecter hinzugefügt werden, Unprotect[Times];6*9=42sollte aber funktionieren (kann derzeit jedoch nicht getestet werden).
Martin Ender

1
Dies dem Operator * anzutun ist einfach so böse ... ich liebe es! >: 3
Tezra

1
Wie kann ich mich verbessern, wenn es genau 42 andere gibt?!? Hier ist meine "Zukunft +1", die vergeben wird, nachdem jemand anderes sie gebrochen hat! :-)
The Vee

1
@MartinEnder Aww; Aber es ist das kürzeste Mathematica, und mein Favorit bisher. : 3
Tezra


25

C 32 31 29 28 Bytes

-2 dank Digital Trauma
-1 dank musicman523

#define f(a,b)a^6|b^9?a*b:42

Ziemlich einfach. Deklariert eine Makrofunktion fmit zwei Argumenten aund b.
Wenn aist 6und bist 9, kehre zurück 42. Andernfalls geben Sie ax zurück b.

Probieren Sie es online!


2
Verwenden Sie ^anstelle von ==und passen Sie die Logik ein wenig an: #define f(a,b)a^6||b^9?a*b:42- Spart 2 Bytes.
Digital Trauma

@DigitalTrauma Cheers: D
MD XF

1
Ich denke, Sie können |stattdessen ein ||anderes Byte speichern, da es immer noch eine niedrigere Priorität hat als^
musicman523

@ musicman523 Danke! Bearbeitung.
MD XF

1
Sie sollten Ihre shortC-Version aktualisieren, um diese Änderungen auch zu übernehmen
musicman523

17

JavaScript (ES6), 20 Byte

x=>y=>x-6|y-9?x*y:42

Erläuterung:

Iff x == 6 und y == 9 ist x-6|y-90 (falsch) und 42 ist das Ergebnis.

Snippet:

f=

x=>y=>x-6|y-9?x*y:42

console.log(f(6)(9));
console.log(f(9)(6));


4
Sehr schön gemacht; Ich wünschte, ich hätte daran gedacht. +1
Shaggy

14

Python 2 , 30 29 Bytes

Vielen Dank an Jonathan Allan für das Speichern eines Bytes!

lambda x,y:x*[y,7][6==x==y-3]

Probieren Sie es online!


2
Speichern Sie ein Byte mit der Tatsache , dass 6 * 7 ist 42:lambda x,y:x*[y,7][6==x==y-3]
Jonathan Allan

@ JonathanAllan Ohh, das ist ordentlich! Vielen Dank! :)
Adnan

Diese Lösung funktioniert auch in Python 3
AMK

Genau das habe ich bekommen! Ich kann scheinbar keinen Weg finden, um weiter Golf zu spielen.
FlipTack

12

05AB1E , 15 11 9 Bytes

-4 Bytes dank @Emigna

-2 Bytes dank @Adnan

P¹69SQi42

Probieren Sie es online!

Wie es funktioniert

P          # multiply input
 ¹         # push first number
  69       # the number 69
    S      # split per character
     Q     # equality for both inputs
       i42 # if so, print 42
           # otherwise print product

Sie könnten 4 Bytes mit‚D96SQi42ëP
Emigna

@Emigna huh ... Warum ,am Anfang?
Neil A.

Koppeln Sie die 2 Eingänge, um sie nur einmal als Liste zu vergleichen.
Emigna

Ich nehme an, 6Qs9Q*dass dies bei gleicher Byteanzahl auch funktioniert hätte.
Emigna

Das Ändern des Eingabeformats spart 2 Bytes:P¹69SQi42
Adnan

10

Java (OpenJDK 8) ,24 22 Bytes

-2 Bytes dank @ OlivierGrégoire

a->b->a==6&b==9?42:a*b

Probieren Sie es online!


3
Willkommen bei PPCG! Ich weiß nicht viel über Java, aber können Sie den System.out.println()Aufruf entfernen und die Funktion das Ergebnis zurückgeben lassen?
ETHproductions

2
@ LưuVĩnhPhúc nicht in Java, weil ich schreiben müsste, (a^6|b^9)==0da es keinen impliziten "anders als 0" -Vergleich gibt. Das resultierende Code-Snippet wäre 27 Byte lang. Wie auch immer, danke für den Vorschlag und bitte sag mir, ob ich deinen Tipp falsch verstanden habe.
Bashful Beluga

1
@Riker Nö, so funktioniert das in Java nicht. ZB int a = 5; if (a) do_some_stuff(); else do_other_stuff();gibt das Snippet einen Type mismatch: cannot convert from int to booleanKompilierungsfehler aus. Sie müssen explizit mit Booleschen Werten erstellt werden. beziehen sich auf SO und ORACLE .
Bashful Beluga

3
Sie können currying verwenden ein Byte zu ersparen, und Sie können von dem Semikolon loszuwerden , da es nicht Teil des Lambda ist ein weiteres Byte übrig: a->b->a==6&b==9?42:a*b.
Olivier Grégoire

1
Nur eine Anmerkung, warum die 0 nicht falsch ist. Java ist typsicher, daher ist 0 eine Ganzzahl und kein Boolescher Wert. Unsicheres Typumwandeln ist nicht zulässig. Sie können also keine falschen Werte verwenden
Martin Barker,

6

Ruby, 24 Bytes

->a,b{a==6&&b==9?42:a*b}

a^6|b^9<1könnte als Boolean arbeiten. Schwer auf meinem Smartphone zu testen.
Eric Duminil

1
@EricDuminil Leider wird dieser Ausdruck als analysiert (((a^6)|b)^9), dh a.^(6).|(b).^(9), er funktioniert nicht richtig. a-6|b-9==0würde funktionieren, aber das ist nicht kürzer.
Ventero

@Ventero: Daran habe ich nicht gedacht. Vielen Dank. a,b==6,9wäre nett, geht aber auch nicht.
Eric Duminil

6

Brain-Flak , 158 154 148 140 138 126 Bytes

(({}<>)(((([()()()]<>)){})<({}{}({}))>{(()()()){}(<{}>)}{}))([()]{()(<{}>)}{})(({<{}>{}((<>))}{}){}<{}>{<({}[()])><>({})<>}{})

Probieren Sie es online!

Erläuterung

Dieser Code ist ziemlich einfach. Wir machen Kopien der beiden obersten Gegenstände auf dem Stapel, wir subtrahieren 6 von einem und 9 von dem anderen. Wir nehmen dann den notder beiden Werte. Wir anddiese Werte multiplizieren das Ergebnis mit 12. Multiplizieren Sie die Eingaben und subtrahieren Sie die beiden Ergebnisse.


2
Vielleicht möchten Sie nutzen notund and(oder sie Graviszeichen), Lesen Ihrer Beschreibung eher ausgelöst mich.
MD XF

6

Faktor, 661 Bytes, 6 Kombinatoren mit 9 Verbindungen

Es gibt einen konstanten Kombinator, der für Ausgang A und B eingestellt ist. Ändern Sie diese, um den Eingang einzustellen.

Blueprint-Zeichenfolge (0.15.18):

0eNrNVm2O2jAQvcv8rEKFvSHLRuqPtrfYCkUhGWAkYkfOGDVCOUBv0bP1JLWTLQuB3U0QbfcPYvzxZt68eYr3sNxaLA0phngPlGlVQfxtDxWtVbr1a1yXCDEQYwEBqLTwUY4Z5WgmmS6WpFLWBpoASOX4HWLRBG8C+EScKr6MIJtFAKiYmLCrpw3qRNliicaleK2SAEpduata+fQObiI+zgKo/R+XIyeDWbcrA18IG71NlrhJd+RuuytPmInby1ucyq+uyFScnPHakWHrVg4VdScmnz2fPzQhjnxQlKlpS4zhk7ugLZd2BCTu0NS8IbXusMvalWgVJyuji4SUA4OYjcWmS606nm31wv8YzI+7SS66axbusHxh1zeITGaJ21C4w41XtyeHHCXH9D+o8eVUjYd3qoY47bc86rWPo158/yze2iCqPtxsmHx3r9ry3E6ylU9cTUv0aITDygwPZaaGeFMgUzbM99NBg/aMegPnV+gxRg6oLtFNZFsjfLhiJB+huZn1B87O7Crr/0Pnfz11vug5/9ePn+/E+2Hf++4beNHV8uzgRWWica6ejnDKiraM5oWXwhtC2CcVDo+FxfAWDfwc3Y9jLv4288cj5qG8IXU3Ie2zKj56xgXgZrNqOURhKGfR/GE6nzfNb7OMaxo=

Der Ausgang ist das Signal Z und ist vom oberen und unteren Entscheider zu entnehmen.

Bildschirmfoto


waaa ... zum ersten mal sehe ich eine factorio antwort in ppcg xD
V. Courtois


6

Gelee , 8 7 Bytes

Vf96SạP

Die Eingabe erfolgt als Array von zwei Ganzzahlen: zuerst der rechte Operand, dann der linke.

Probieren Sie es online!

Wie es funktioniert

Vf96SạP  Main link. Argument: [b, a]

V        Cast [b, a] to string, then eval the resulting string.
         For [b, a] = [9, 6], this yields 96.
 f96     Filter with 96, yielding [96] if V returned 96, [] otherwise.
    S    Take the sum, yielding either 96 or 0.
      P  Compute the product of [b, a], yielding ba = ab.
     ạ   Compute the absolute difference of the results to both sides.
         When the sum is 0, this simply yields the product.
         However, when [b, a] = [9, 6], this yields 96 - 54 = 42.

Dies hat einen Freiheitsgrad von -1. Wie kommen Sie überhaupt auf diese Zufälle?
Lirtosiast

5

Faktor, 581 Bytes, 3 Kombinatoren mit 4 Verbindungen

Blueprint-Zeichenfolge (0.16.36):

0eNqllNtu4jAQht9lLldmldNCFWkvto/RCkUhGWAkYkfOGDVCefeOnV1Km7ACemPJ9vibf04+webgsLWkGfITUGV0B/nrCTra6fLgz7hvEXIgxgYU6LLxO2/HpeZFZZoN6ZKNhUEB6RrfII+HtQLUTEw44sKmL7RrNmjF4AyqsaIa7SVHQWs6eWq0dy+46OcvBT3ki1hc1GSxGi8T5XWwNYdig/vySPJYXvxFFnJXB0znT7dkOy4mYR3JspOTs6DRYoFHtD3vSe98XP/CFZ9xtsqe0mW29KdNW9qgOYffgjCOW3eHk+eR3fai1WkuttY0BWlhQM7W4TC61mPAIYzYLxbry6yS7FKxJFs54rANFdhZRP3VMBnWQk08ZvZ+ChpExqSCyX9bYVLCRfxRwbmabenAaK+03rX0/RnT5z7VJbroQnUH7HkGlq7OsDFtc8WYzWJ8WxbTs4rSEu8bZKpuGoXopkn4gH5vGEKiO/SMO5vbtCgDEjTCjwcm5AWGO4ZgknX16Tq7OhRfHiZXypU91PTRd6ZYdIjo8PnmF3+1AvmfuuBq+bRKYmnWKM2G4R1hAPnz

Der Konstanten-Kombinator unten links sollte auf Ausgang A und B als Eingang eingestellt sein. Das Ausgangssignal ist das Signal Z des arithmetischen Kombinators unten rechts.

Bildbeschreibung hier eingeben

Top left: 2147483640 A, 2147483637 B
Top right: If everything = 2147483646 output B, input count
Bottom left: (input) A, (input) B
Bottom right: A * B -> Z

5

MATL , 11 Bytes

[BE]=?42}Gp

Die Eingabe ist ein Array mit den beiden Zahlen.

Probieren Sie es online!

Erläuterung

[BE]    % Push array [6, 9]
=       % Implicit input: array of two numbers. Compare with [6, 9] element-wise
?       % If the two entries are true
  42    %   Push 42
}       % Else
  G     %   Push input
  p     %   Product of array
        % Implicit end. Implicit display

4

GW-BASIC , 55 Bytes

1INPUT A:INPUT B
2IF A=6THEN IF B=9THEN ?"42":END
3?A*B

Ausgabe:

Ausgabe

Die erste Maschine bei pcjs hat IBM BASIC, was praktisch dasselbe ist. Um dies zu testen, Kopf dort über, schlug Runauf der Maschine, Presse Enter- Enterund die Art , BASICAum in BASIC - Modus. Geben Sie dann den Quellcode ein (er wird automatisch für Sie schön gedruckt), geben Sie RUNzwei ganze Zahlen ein und fertig!


3
Sind Sie sicher, dass der Bytecount korrekt ist? GW-BASIC verwendet eine Codierung, bei der einige Wörter wie INPUTin weniger Bytes codiert werden, als die Zeichen, aus denen sie bestehen, vermuten lassen. Die Zählung scheint mir daher hoch.

@ ais523 Nun, ich habe es durchgearbeitet wcund bekam 55 ... In meinen Emulator kopiert und es hatte das erwartete Verhalten.
MD XF

3
Mein Punkt ist, dass Sie Ihre Einreichung wahrscheinlich höher bewerten, als es sein muss. Fordern Sie GW-BASIC auf, die Datei zu speichern, und überprüfen Sie dann die Größe der resultierenden Datei auf der Festplatte. es sollte kleiner sein.

@ ais523 Gespeichert als OUT.BAS: i.stack.imgur.com/32eH1.png Bytecount ist der mittlere Wert.
MD XF

OK, ich hatte das nicht erwartet, aber ich denke, es ist eine Wäsche in dieser Situation. (Oder vielleicht gibt es mehr als ein Speicherformat?)


4

Überprüfen Sie , 34 33 Bytes

.:+&>#v
#>42#v#9-!\>6-!*?
 d* ##p

Check ist mein neuer Esolang. Es verwendet eine Kombination aus 2D- und 1D-Semantik.

Die Eingabe besteht aus zwei Zahlen, die über Befehlszeilenargumente übergeben werden.

Erläuterung

Der Stapel beginnt mit den Befehlszeilenargumenten. Nennen wir die Argumente aund b.

Der erste Teil .:+&dupliziert den Stapel im Wesentlichen und lässt ihn unverändert a, b, a, b. >Drückt 0 auf den Stapel (es ist Teil eines numerischen Literales, das durch ergänzt wird 9).

#wechselt zur 2D-Semantik und vleitet die IP nach unten um. Die IP läuft sofort auf eine #, die wieder auf 1D-Semantik umschaltet.

9-!prüft, ob b9 ist (indem 9 subtrahiert und das logische NOT genommen wird). \>6-!prüft dann, ob agleich 6 ist. Der Stack enthält nun a, b, 1, 1genau dann, wenn b==9und a==6. Das Multiplizieren mit *ergibt das logische UND dieser beiden Werte und gibt an, a, b, 1ob die Eingaben 6und 9und a, b, 0andernfalls waren.

Danach läuft die IP in eine ?. Dies wechselt in den 2D-Modus, wenn der obere Stapelwert ungleich Null ist, und wird andernfalls im 1D-Modus fortgesetzt.

Wenn der oberste Stapelwert war 1, bedeutet dies, dass die anderen Stapelwerte 6und sind 9, also drücken wir 42 mit zum Stapel >42und bewegen uns dann in #der letzten Zeile nach unten zum zweiten .

Wenn der obere Stapelwert war 0, wird die Ausführung in die nächste Zeile verschoben. dentfernt das 0(wie ?nicht), und dann multiplizieren wir die beiden Eingaben mit *. Das ##Ein- und Ausschalten des 2D-Modus geschieht nicht.

Die Filialen haben sich nun wieder zusammengeschlossen. Der Stapel enthält entweder 6, 9, 1, 42oder a*b. pdruckt den obersten Stapelwert und beendet dann das Programm, wobei der Rest des Stapels verworfen wird.


Das sieht nach einer tollen Sprache aus!
Kein Baum


3

Python 3 , 36 33 Bytes

lambda x,y:42if x==6==y-3else x*y

Probieren Sie es online!


1
Alternate Version, gleiche Größe: lambda x:x[0]*x[1]if x!=(6,9)else 42. Der einzige Unterschied ist der Eingabetyp.
musicman523

Nevermind - Ihre bearbeitete Version ist kürzer :)
musicman523

Der Code, den Sie gepostet haben, funktioniert nicht wirklich. Deshalb habe ich ihn auf die von Ihnen verknüpfte Arbeitsversion von TIO umgestellt.
ETHproductions

Es funktioniert für mich: In [1]: f = Lambda x, y: 42if 6 == x == y-3else x * y In [2]: f (6,9) Out [2]: 42 In [3 ]: f (9,6) Out [3]: 54 @ETHproductions
Martmists

@Martmists Sie haben damals ein Leerzeichen verpasst, weil Ihr Code lautetef=lambda x,y:42if6==x==y-3else x*y
ETHproductions

3

APL (Dyalog) , 10 Bytes

×-12×6 9≡,

Probieren Sie es online!

× das Produkt (der Argumente)

- Minus

12× zwölf mal

6 9≡ ob (6,9) identisch ist mit

, die Verkettung (der Argumente)


Oh wow, ich habe das gerade gesehen und meine J-Antwort ist genau die gleiche wie die folgende: / Bis auf ein Byte länger
Conor O'Brien

@ ConorO'Brien Ergibt Sinn. J und implizite APL sind größtenteils gleichwertig, mit Ausnahme von Js Multi-Char-Primitiven (und der Notwendigkeit von Cap für einen finalen Abschluss).
Adám

3

R, 41 Ich glaube, ich weiß nicht, wie man Bytes zählt. Ich bin neu: D

function(a,b){

if(a==6&b==9){42} else {a*b}

}

Ich definiere eine Funktion, deren Argumente a und b in dieser Reihenfolge sind . Wenn a gleich 6 und b gleich 9 ist, wird 42 zurückgegeben, andernfalls a mal b


Willkommen auf der Seite! :)
DJMcMayhem

Herzlich willkommen. Berücksichtigen Sie, dass auch Zeilenumbrüche und Leerzeichen zählen. In Ihrem Fall, wenn Sie Zeilenumbrüche und Leerzeichen entfernen (die Sie können), ist es nur 41.
Masclins

1
Sie können zwei Bytes mitifelse(a==6&b==9,42,a*b)
Masclins

Sie können das Ganze auf 33 Bytes reduzieren function(a,b)`if`(a-6|b-9,a*b,42).
Rturnbull

Dies sind nur 41 Bytes, nachdem Sie das nicht benötigte Leerzeichen entfernt haben. Bis dahin sind es 47 Bytes.
Pavel

3

SPL , 356 Bytes

a.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:Listen to your heart!Puck:Listen to your heart!Are you as big as the sum of a big big big cat and a cat?If so, am I as big as the sum of a big big cat and a big cat?If so, you are as big as the product of I and the sum of I and a cat.If not, you are as big as the product of you and I.Open your heart

Mit Zeilenumbrüchen und Leerzeichen:

a.                       *Title*
Ajax,.                   *Declare variable Ajax*
Puck,.                   *Declare variable Puck*
Act I:.
Scene I:.
[Enter Ajax and Puck]
Ajax: Listen to your heart!                  *Set Puck's value to user input*
Puck: Listen to your heart!                  *Set Ajax's value to user input*
      Are you as big as the sum of a big 
       big big cat and a cat?                *Is Ajax=9?* 
      If so, am I as big as the sum of a 
       big big cat and a big cat?            *Is Puck=6?* 
      If so, you are as big as the product 
       of I and the sum of I and a cat.      *If so, set Ajax=42* 
      If not, you are as big as the product 
       of you and I.                         *If not set Ajax=(Ajax)(Puck)*
      Open your heart                        *Print Ajax's value*


3

Standard ML (mlton) , 22 20 Bytes

2 Bytes gespart dank @Laikoni!

fun$6 $9=42| $x y=x*y

Probieren Sie es online!

Dies ist die Art von Dingen, für die SML gedacht ist, weshalb es shortC und Python schlägt.

Die alte Version sah viel schöner aus. : P



@Laikoni Wow, ich hatte keine Ahnung, dass Sie $als Bezeichner verwenden können! Warum wird das nicht kompiliert, wenn Sie das Leerzeichen zwischen |und entfernen $?
musicman523

SML unterscheidet alphanumerische und symbolische Bezeichner, was beim Golfen sehr nützlich sein kann. |$wird als einzelne symbolische Kennung analysiert, sodass alles kaputt geht. Ich plane, bald eine Frage mit Tipps für SML zu schreiben und eine Antwort auf diese beiden Arten von Bezeichnern hinzuzufügen.
Laikoni



2

Gelee , 10 Bytes

⁼6,9ȧ42ȯ⁸P

Ein monadischer Link, der eine Liste der beiden Nummern erstellt.

Probieren Sie es online!

Wie?

⁼6,9ȧ42ȯ⁸P - Link: list of numbers [a,b]
 6,9       - 6 paired with 9, [6,9]
⁼          - equals? (non-vectorising) (1 or 0)
     42    - literal answer, 42
    ȧ      - logical and               (42 or 0)
        ⁸  - link's left argument, [a,b]
       ȯ   - logical or                (42 or [a,b])
         P - product                   (42 or a*b)

Du hättest es genauso gut gebrauchen ?können wie ich. ;)
Erik der Outgolfer

Ah, weil ,es insofern besonders 6,9ist, als es Teil des wörtlichen Regex-Musters ist, also als einzelnes Token analysiert wird und das schnelle $damit kombiniert werden kann . Haben Sie das begründet oder einfach versucht und festgestellt, dass es funktioniert hat?
Jonathan Allan

1
Ich habe das begründet.
Erik der Outgolfer


2

SILOS , 81 67 Bytes

readIO
J=i
readIO
a=(J-6)^2+(i-9)^2
a/a
a-1
a*12
x=J*i+a
printInt x

Probieren Sie es online!

In gewisser Weise fungiert Addition als interessantes NAND-Gatter in SILOS.

-14 Bytes dank @Leaky Nun

Im Wesentlichen erstellen wir eine Zahl "a", die 0 (falsch) ist. Wenn j 6 und i = 9 ist, dividieren wir es durch sich selbst, subtrahieren eins und multiplizieren es mit 12, um zu unserem Produkt hinzuzufügen.

Wenn "a" nach dem Subtrahieren von Eins und Multiplizieren 1 war, wird es ein No-Op. In dem Fall jedoch, in dem a 0 ist, wirft 0/0 stillschweigend einen Fehler (der automatisch abgefangen wird), und wird dann 0 -1 und wir subtrahieren 12 von unserem Produkt.




@LeakyNun ooh, das ist klug.
Rohan Jhunjhunwala

Eigentlich 0/0wird 0.
Undichte Nonne

@LeakyNun Ich wollte sagen, wird 0 und dann dekrementiert. Festsetzung.
Rohan Jhunjhunwala


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.