var QUESTION_ID=151130,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/151130/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:+a[2],language:a[1],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=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/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/codegolf/all.css?v=83c949450c8b"> <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>
Réponses:
Gelée , 7 octets
Essayez-le en ligne!
Utilise la convolution (que j'ai contribué à Jelly: D)
Comment ça marche
la source
<⁵Ạ
pour une sortie sans qu'un booléen ne soit pas effectué dessus.JavaScript (ES6), 67 octets
Prend la saisie sous forme de 2 chaînes dans la syntaxe de currying
(a)(b)
. Retoursfalse
pour facile outrue
pour pas facile.Cas de test
Afficher l'extrait de code
Alt. version (défectueuse),
645552 octetsSauvegardé 3 octets en prenant des chaînes, comme suggéré par @Shaggy
Comme l'a souligné @LeakyNun, cette méthode échouerait sur certains entiers spécifiques de grande taille.
Prend la saisie sous forme de 2 chaînes dans la syntaxe de currying
(a)(b)
. Retourstrue
pour facile oufalse
pour pas facile.Cas de test
Afficher l'extrait de code
Comment?
L'idée ici est d'exposer explicitement les portées en insérant des zéros avant chaque chiffre de chaque facteur.
Exemples:
331 x 1021 devient 30301 x 1000201 , ce qui donne 30307090501 au lieu de 337951 . En ajoutant un zéro au premier et en regroupant tous les chiffres par 2, vous pouvez écrire 03 03 07 09 05 01 . Tous les groupes ont moins de 10 , ce qui signifie qu'il n'y aurait pas eu de retenue dans la multiplication standard.
431 x 1021 devient 40301 x 1000201 , ce qui donne 40309100501 et peut être écrit 04 03 09 10 05 01 . Cette fois, nous avons un 10 qui révèle un report dans la multiplication standard.
la source
108
le milieu gâche votre algorithme)Alice , 30 octets
Essayez-le en ligne!
Sorties
1
faciles et0
difficiles.Les nombres sont faciles à multiplier si et seulement si la somme des chiffres du produit est égale au produit des sommes des chiffres.
la source
MATL , 10 octets
Sorties
0
faciles,1
difficiles.Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
R ,
13511010986 octetsEssayez-le en ligne!
Prend les entrées sous forme de chaînes.C'est moche mais ça marche ™.Cela utilise maintenant une approche de convolution, comme dans la réponse de Leaky Nun , de sorte que les entrées sont entrées sous forme d'entiers, et renvoie
TRUE
les nombres difficiles à multiplier et ceuxFALSE
faciles à multiplier.J'ai toujours eu du mal à porter les approches de convolution dans le passé, mais aujourd'hui, j'ai enfin lu la documentation :
Ce qui est juste idiot. Ainsi, l'extraction de chiffres est inversée
n
et se résout en réponse du port de Leaky Nun.la source
Python 2 , 88 octets
Prend deux nombres entiers en entrée et retourne
False
(facile à multiplier) ouTrue
(non).Essayez-le en ligne! (trop lent pour l'un des cas de test)
la source
len(`n+m`)
serait effectivement échouer pour 40, 30 .len(`n+m`)+1
?len(`n`+`m`)
devrait faire si.JavaScript (Node.js) ,
43413736 octetsMerci @ Dennis pour l'idée d'utiliser l'interpolation de chaîne dans cette réponse et économisez 4 octets!
Merci @ ØrjanJohansen pour -1!
Essayez-le en ligne!
Bien sûr, lorsque la base de destination est inférieure à la base d'origine (comme dans ma réponse à la gelée, la base est égale à 2), elle
<
doit être inversée.la source
Wolfram Language (Mathematica) ,
75666556 octetsEssayez-le en ligne!
Recevoir 2 entrées de chaîne
Explication:
-9 pour changer pour utiliser une chaîne en tant qu'entrée
-1 pour utiliser infixer l'opérateur
-9 Merci @MartinEnder pour la
Max
fonctionla source
Python 2 ,
158135123113 octets-12 octets grâce à Leaky Nun -10 octets grâce aux ovs
Essayez-le en ligne! ou Essayez tous les cas de test
la source
all(d[k]<10for k in d)
fonctionne pas ou est-ce juste Python 3?Julia 0.6 , 30 octets
Essayez-le en ligne!
L'entrée est un tuple de nombres, la sortie est
true
difficile à multiplier etfalse
facile..
est une application de fonction élémentaire....
étend le tuple (de listes de chiffres entiers) à deux entrées distinctes de laconv
fonction.la source
Python 3 ,
5835 134039 octetsOn dirait que j'ai eu cette idée deux heures trop tard .
Merci à @ ØrjanJohansen pour le golf d'un octet!
Essayez-le en ligne!
la source
SNOBOL4 (CSNOBOL4) ,
268264247246243131 octetsEssayez-le en ligne!
Ports l'approche par Nitrodon . Je pense que c'est la première fois que je définis une fonction dans SNOBOL,
D
pour la somme des chiffres.ancienne version, 243 octets:
Essayez-le en ligne!
Entrée sur STDIN séparée par des retours à la ligne, sortie vers STDOUT: une nouvelle ligne pour faciliter la multiplication et aucune sortie pour non facile à multiplier.
Cela ne va pas gagner de prix, mais cela présente une autre approche (enfin, c'est vraiment l'approche naïve). Je ne pense pas que je pourrais écrire cela dans Cubix, mais SNOBOL est assez dur pour fonctionner tel quel.
Puisqu'il prend l'entrée sous forme de chaîne, cela fonctionnera pour toute entrée de moins de 512 chiffres chacun; Je ne suis pas sûr à 100% de l’importanceARRAY
de SNOBOL.INPUT est mis en mémoire tampon dans cette version de SNOBOL pour avoir une largeur maximale de 1024 caractères; tous les autres personnages sont alors perdus. Il semble qu'un ARRAY peut être assez volumineux; bien au-dessus des 2048 cellules nécessaires.
la source
Charbon de bois , 38 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Sorties a
-
quand les nombres sont faciles à multiplier. Explication:Initialisez
z
sur un tableau de zéros suffisant (somme des longueurs des entrées).Boucle sur les indices des entrées
q
eth
.Effectuer une étape de la multiplication longue.
Vérifiez les porte.
la source
Pari / GP , 52 octets
Essayez-le en ligne!
la source
Haskell,
8281 octetsLes nombres sont pris comme des chaînes. Retourne
False
si les nombres sont faciles à multiplier etTrue
sinon.Essayez-le en ligne!
Je pense que c'est assez différent de la réponse de @ Laikoni . Comment ça marche:
la source
Haskell ,
4544 octetsModifier:
==
à<
.J'y ai pensé avant de regarder les autres réponses, puis j'ai découvert que celle d'Alice utilisait la même idée de base. De toute façon, car c'est plus court que les autres réponses de Haskell.
?
prend deux entiers et retourne aBool
. Utiliser comme331?1021
.False
signifie que la multiplication est facile.Essayez-le en ligne!
s
est une fonction qui calcule la somme des chiffres d'un entier. (read.pure
convertit un caractère à un chiffre en un entier.)la source
Ruby , 69 octets
Essayez-le en ligne!
la source
Haskell , 123 octets
Essayez-le en ligne! Exemple d'utilisation:
"331" % "1021"
rendementsTrue
.la source
Perl 5 , 100 + 2 (
-F
) = 102 octetsEssayez-le en ligne!
sorties false pour facile, vrai pour pas facile.
la source
Gelée , 8 octets
Essayez-le en ligne!
Un port de ma réponse javascript . Pas plus court que la réponse Jelly existante car Jelly possède une puissante convolution intégrée.
Prendre l'entrée comme une liste de deux nombres. Retours
1
pour facile,0
pour pas facile.Explication:
la source
C (gcc) , 104 octets
Fondamentalement, faites une multiplication "à la main" dans r [] et définissez la valeur de retour si une colonne dépasse 9, car cela signifierait qu'un report est survenu.
Étonnamment, c'était plus court que ma première tentative qui prenait les chaînes comme arguments.
Essayez-le en ligne!
la source