var QUESTION_ID=124242,OVERRIDE_USER=61474;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+r.match(SCORE_REG)[0],language:r.match(LANG_REG)[0].replace(/<\/?[^>]*>/g,"").trim(),link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/\d+((?=$)|(?= Bytes))/i,OVERRIDE_REG=/^Override\s*header:\s*/i;LANG_REG=/^[^,(\n\r]+/i
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=617d0685f6f3"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
42
deux fois.Réponses:
Mathematica, 15 octets
Le nombre d'octets suppose le codage ANSI Windows (CP-1252).
Définit un opérateur binaire
±
qui résout le problème. Nous définissons simplement6±9=42
comme un cas spécial qui a la priorité, puis ajoutons une définition de secours qui rend±
égale à la multiplication. Ce dernier utilise une astuce de golf assez intéressante. La raison pour laquelle cela fonctionne est en fait assez complexe et nous devons examiner des séquences . Une séquence est similaire à ce qu'on appelle un splat dans d'autres langues. C'est fondamentalement une "liste" sans aucune enveloppe autour d'elle. Egf[1, Sequence[2, 3, 4], 5]
est vraiment justef[1, 2, 3, 4, 5]
. L'autre concept important est que tous les opérateurs ne sont que du sucre syntaxique. En particulier,±
peut être utilisé comme opérateur unaire ou binaire et représente la têtePlusMinus
. Ainsi±x
estPlusMinus[x]
eta±b
estPlusMinus[a,b]
.Maintenant nous avons la définition
±n__
. C'est un raccourci pour définirPlusMinus[n__]
. Maisn__
représente une séquence arbitraire d'arguments. Cela ajoute donc une définition pour l'utilisateur binaire (et n-aire)PlusMinus
. La valeur de cette définition est1n
. Comment cela multiplie-t-il les arguments? Eh bien,1n
utilise la multiplication implicite de Mathematica par juxtaposition pour qu’elle soit équivalente à1*n
. Mais*
c'est aussi un raccourci pourTimes[1,n]
. Maintenant,n
est la séquence des arguments. Donc, si nous invoquonsa±b
alors cela deviendra réellementTimes[1,a,b]
. Et c'est justea*b
.Je pense que la manière dont cet abus de syntaxe nous permet de définir un opérateur binaire utilisant une syntaxe unaire est tout à fait remarquable. Nous pourrions maintenant même faire
PlusMinus[2,3,4]
du calcul24
(ce qui peut aussi être écrit comme±##&[2,3,4]
ou2±Sequence[3,4]
mais ça commence à devenir fou à ce moment-là).la source
*
est un opérateur intégré, vous devrezUnprotect
donc ajouter d'autres définitions, mais celaUnprotect[Times];6*9=42
devrait fonctionner (vous ne pouvez pas tester pour le moment).Haskell , 14 octets
Essayez-le en ligne!
la source
C,
32312928 octets-2 grâce à Digital Trauma
-1 grâce à musicman523
Assez simple. Déclare une fonction macro
f
qui prend deux arguments,a
etb
.Si
a
est6
etb
est9
, revenez42
. Sinon, retournea
xb
.Essayez-le en ligne!
la source
^
au lieu de==
et ajustez un peu la logique:#define f(a,b)a^6||b^9?a*b:42
- enregistre 2 octets.|
au lieu de||
sauvegarder un autre octet, car il a toujours une priorité inférieure à celle de^
JavaScript (ES6), 20 octets
Explication:
Si x == 6 et y == 9,
x-6|y-9
sera 0 (faux), et 42 sera le résultat.Fragment:
la source
Python 2 ,
3029 octetsMerci à Jonathan Allan d' avoir sauvegardé un octet!
Essayez-le en ligne!
la source
lambda x,y:x*[y,7][6==x==y-3]
05AB1E ,
15119 octets-4 octets grâce à @Emigna
-2 octets grâce à @Adnan
Essayez-le en ligne!
Comment ça fonctionne
la source
‚D96SQi42ëP
,
au début?6Qs9Q*
cela aurait aussi bien fonctionné pour le même nombre d'octets.P¹69SQi42
Java (OpenJDK 8) ,
2422 octets-2 octets grâce à @ OlivierGrégoire
Essayez-le en ligne!
la source
System.out.println()
appel et laisser la fonction renvoyer le résultat?(a^6|b^9)==0
car il n'y a pas de comparaison implicite "différente de 0". L'extrait de code résultant aurait 27 octets de long. Quoi qu'il en soit, merci pour la suggestion, et s'il vous plaît dites-moi si je me suis trompé.int a = 5; if (a) do_some_stuff(); else do_other_stuff();
donne uneType mismatch: cannot convert from int to boolean
erreur de compilation. Ils doivent être faits explicitement avec des valeurs booléennes; voir SO et ORACLE .a->b->a==6&b==9?42:a*b
.Ruby, 24 octets
la source
a^6|b^9<1
pourrait fonctionner comme booléen. Difficile à tester sur mon smartphone.(((a^6)|b)^9)
, par exemplea.^(6).|(b).^(9)
, il ne fonctionnera pas correctement.a-6|b-9==0
fonctionnerait, mais ce n’est pas plus court.a,b==6,9
ce serait bien, mais ça ne marche pas non plus.Brain-Flak ,
158154148140138126 octetsEssayez-le en ligne!
Explication
Ce code est assez simple. Nous faisons des copies des deux premiers éléments de la pile, en soustrayant 6 de l’un et 9 de l’autre. Nous prenons ensuite la
not
des deux valeurs. Nousand
ces valeurs, multiplions le résultat par 12. Multipliez les entrées et soustrayez les deux résultats.la source
not
etand
(ou casser la gueule), lire votre description plutôt me fait trébucher.Factorio, 661 octets, 6 combinateurs avec 9 connexions
Un combinateur constant est défini sur les sorties A et B. Modifiez-les pour définir l'entrée.
Blueprint string (0.15.18):
La sortie est le signal Z et doit être prise à partir des décisions en haut et en bas.
la source
Gelée ,
87 octetsL'entrée consiste en un tableau de deux entiers: d'abord l'opérande droit, puis celui de gauche.
Essayez-le en ligne!
Comment ça fonctionne
la source
Factorio, 581 octets, 3 combinateurs avec 4 connexions
Blueprint string (0.16.36):
Le combinateur de constantes inférieur gauche doit être réglé sur les sorties A et B en entrée. La sortie est le signal Z du combinateur arithmétique en bas à droite.
la source
MATL , 11 octets
L'entrée est un tableau avec les deux nombres.
Essayez-le en ligne!
Explication
la source
GW-BASIC , 55 octets
Sortie:
La première machine chez pcjs a IBM BASIC, ce qui est pratiquement la même chose. Pour tester cela, allez là-bas, appuyez Runsur la machine, appuyez sur Enter- Enteret tapez
BASICA
pour passer en mode BASIC. Ensuite, entrez le code source (il sera automatiquement imprimé pour vous), tapezRUN
, entrez deux entiers, et c'est fait!la source
INPUT
, sont codés en moins d'octets que ne le suggèrent les caractères qui les composent. Le compte me semble donc élevé.wc
et j'ai eu 55 ... Copié-collé dans mon émulateur et il avait le comportement attendu.OUT.BAS
: i.stack.imgur.com/32eH1.png Bytecount est la valeur du milieu.R , 33 octets
Retourne une fonction.
Essayez-le en ligne!
la source
Check ,
3433 octetsCheck est mon nouveau esolang. Il utilise une combinaison de sémantique 2D et 1D.
L'entrée consiste en deux nombres transmis via des arguments de ligne de commande.
Explication
La pile commence par les arguments de la ligne de commande. Appelons les arguments
a
etb
.La première partie,
.:+&
essentiellement, duplique la pile, la laissant commea, b, a, b
.>
pousse 0 dans la pile (il fait partie d'un littéral numérique complété par9
).#
passe en sémantique 2D etv
redirige l'IP vers le bas. L'IP se heurte immédiatement à un#
qui revient à la sémantique 1D.9-!
vérifie sib
est égal à 9 (en soustrayant 9 et en prenant le NON logique).\>6-!
puis vérifie sia
est égal à 6. La pile contient maintenanta, b, 1, 1
si et seulement sib==9
eta==6
. Multiplier avec*
prend le ET logique de ces deux valeurs, en donnanta, b, 1
si les entrées étaient6
et9
, eta, b, 0
sinon.Après cela, l’IP rencontre un
?
. Ceci basculera en mode 2D si la valeur de pile supérieure est différente de zéro, sinon, continuera en mode 1D.Si la valeur de pile supérieure était
1
, cela signifie que les autres valeurs de pile sont6
et9
, nous plaçons donc 42 dans la pile avec>42
, puis passons à la seconde#
sur la dernière ligne.Si la valeur de pile supérieure était
0
, l'exécution passe à la ligne suivante.d
supprime le0
(comme?
ne le fait pas), puis on multiplie les deux entrées avec*
. Les##
commutateurs dans et hors du mode 2D, ne faisant rien.Les branches ont maintenant rejoint à nouveau. La pile contient
6, 9, 1, 42
, oua*b
.p
imprime la valeur de pile supérieure et ensuite le programme se termine, en éliminant le reste de la pile.la source
JavaScript (ES6), 25 octets
la source
Python 3 ,
3633 octetsEssayez-le en ligne!
la source
lambda x:x[0]*x[1]if x!=(6,9)else 42
. La seule différence est le type d'entrée.f=lambda x,y:42if6==x==y-3else x*y
APL (Dyalog) , 10 octets
Essayez-le en ligne!
×
le produit (des arguments)-
moins12×
douze fois6 9≡
si (6,9) est identique à,
la concaténation (des arguments)la source
R, 41 Je pense que je ne sais pas comment compter les octets Je suis nouveau: D
Je définis une fonction dont les arguments sont a et b dans cet ordre . Si a est égal à 6 et b est égal à 9, il retourne 42. Sinon, a fois b
la source
ifelse(a==6&b==9,42,a*b)
function(a,b)`if`(a-6|b-9,a*b,42)
.SPL , 356 octets
Avec nouvelles lignes et espaces:
la source
Japt ,
131112 octetsEssayez-le en ligne
21 octets enregistrés grâce à obarakon.la source
N¬¥69?42:N×
pour 11 octetsStandard ML (MLton) ,
22 à20 octets2 octets sauvés grâce à @Laikoni!
Essayez-le en ligne!
C’est le genre de chose à laquelle SML est destiné, c’est pourquoi il bat ShortC et Python.
L'ancienne version était beaucoup plus jolie. : P
la source
$
comme identifiant! Pourquoi cela ne compile-t-il pas si vous supprimez l'espace entre|
et$
?|$
est analysé comme un identifiant symbolique unique, de sorte que tout se casse. Je prévois d’écrire bientôt une question de conseils pour SML et d’ajouter une réponse concernant ces deux types d’identificateurs.Pyth, 12 octets
Essayez-le en ligne
Explication
la source
AQ?&q6Gq9G42*GH
Retina , 36 octets
Essayez-le en ligne! Multiplication unaire standard, modifie simplement l'entrée pour gérer le cas particulier.
la source
Gelée , 10 octets
Un lien monadique prenant une liste des deux nombres.
Essayez-le en ligne!
Comment?
la source
?
, comme je l'ai fait. ;),
particularité de faire partie du motif littéral des expressions rationnelles, il6,9
est donc analysé comme un simple jeton et le quick$
peut le combiner⁼
. Avez-vous raisonné cela ou juste essayé et remarqué que cela fonctionnait?Gelée , 9 octets
Essayez-le en ligne!
Prend la liste des nombres en entrée.
la source
SILOS ,
81 à67 octetsEssayez-le en ligne!
En un sens, l'addition fonctionne comme une porte NAND intéressante dans SILOS.
-14 octets grâce à @Leaky Nun
Nous créons essentiellement un nombre "a" qui vaut 0 (falsy) si et seulement j est égal à 6 et i = 9, puis nous le divisons par lui-même, soustrayons-en un et le multiplions par 12 afin de l'ajouter à notre produit.
Si "a" était 1 après avoir soustrait un et multiplié, cela devient un non-op, cependant dans le cas où a vaut 0, 0/0 jette silencieusement une erreur (qui est automatiquement saisie par magie) a devient 0, puis devient -1 et nous finissons par soustraire 12 de notre produit.
la source
0/0
devient0
.Convexe ,
161413 octetsEssayez-le en ligne!
la source
shortC , 23 octets
Essayez-le en ligne!
la source