var QUESTION_ID=94202,OVERRIDE_USER=12537;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:+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 ,
9 87 octets-1 octet grâce à @Dennis (utilisez une division entière
:
, plutôt que pas moins de,<¬
)TryItOnline
Comment?
la source
Haskell, 35 octets
Ce document prouve un résultat qui simplifie considérablement le problème. Prop 1 dit que
Il est clair pourquoi les deux sont nécessaires: tous les montants restent des multiples du pgcd, et l'objectif doit tenir dans un récipient. La clé du résultat est un algorithme pour produire n'importe quel montant d'objectif qui correspond à ces conditions.
Appelez l'opérateur
%
comme[3,6,12]%9
.Une alternative à 37 octets:
la source
05AB1E ,
989 octetsUtilise l' encodage CP-1252
Explication
Essayez-le en ligne!
1 octet enregistré en utilisant l'astuce moins que la réponse MATL de Luis Mendo
la source
MATL , 10 octets
Essayez-le en ligne!
Cela utilise l'approche de @ xnor .
la source
Excel: 43 octets
=AND(MOD(A10,GCD(A1:A9))=0,A10<=MAX(A1:A9))
Essayez-le en ligne !
Comment utiliser:
Mettez cette formule n'importe où sauf A1-A10.
Saisissez ensuite vos volumes de décantation dans les cellules A1: A9 (car le nombre de décantes est fixe) et l'objectif dans A10. les cellules sans décantation doivent être laissées en blanc. Partout où vous mettez la formule contiendra le résultat. VRAI si vous pouvez atteindre l'objectif, FAUX si vous ne le pouvez pas.
la source
JavaScript (ES6), 58 octets
Un autre port de la réponse de @ xnor. Oui, je peux
reduce
réutiliser!la source
e=>n<=e
est un palindrome visuel;)Rétine , 39 octets
L'entrée doit être une liste séparée par des virgules des carafes, suivie d'un point-virgule, suivi du volume cible. Par exemple:
La sortie est
0
(fausse) ou1
(véridique).Essayez-le en ligne! (La première ligne active une suite de tests séparés par un saut de ligne.)
Explication
Cela convertit simplement l'entrée en unaire. Ensuite, nous faisons simplement correspondre les entrées valides avec une seule expression régulière:
La partie à l'intérieur
(?>...)
trouve le GCD. Nous le faisons en trouvant la plus grande sous-chaîne1+
avec laquelle nous pouvons faire correspondre toutes les carafes (permettant une option,
uniquement après une correspondance complète du GCD). Le groupe atomique (le(?>...)
) lui-même afin que le moteur d'expression régulière ne revienne pas aux diviseurs du GCD si le volume cible ne peut pas être mis en correspondance (sinon le groupe1
sera à un moment donné réduit à correspondre à un seul1
et toutes les entrées seront véridiques) .Une fois que nous avons trouvé le GCD, nous essayons de faire correspondre le volume cible en tant que multiple avec un simple
(\1+)$
.Enfin, nous vérifions que le volume cible n'est pas supérieur à la plus grande capacité de la carafe, en veillant à ce que le volume puisse être adapté à l'intérieur de n'importe quelle carafe
(?<=\3.+)
.la source
Rubis, 35 octets
la source
PARI / GP , 31 octets
Assez simple. Vérifier le max (
vecmax
) est très coûteux, je me demande si cela peut être mieux fait.la source
Perl, 47 octets
Comprend +2 pour
-ap
Exécutez avec les tailles de pot sur la première ligne de STDIN et le pot cible sur la deuxième ligne:
decanter.pl
:Cette solution est inhabituelle en ce qu'elle traite l'entrée ligne par ligne et produit quelque chose pour chacun d'eux. La sortie de la première ligne a été soigneusement conçue pour être vide pendant que la deuxième ligne imprime la solution. Deux octets sont perdus sur
()
car<
et>
sont conçus pour être non associatif en Perl.La solution regex est également sympa mais 49 octets:
(certaines parties volées de la solution Retina)
Pour celui-ci, donnez une entrée sur STDIN sous forme de pots séparés par des espaces et ciblez après un
:
:Langues difficiles à battre avec un intégré
gcd
(21 octets) etmax
(7 octets) pour celui-ci ...la source
Scala,
9053 octetsFonctionne essentiellement de la même manière que les autres réponses,
mais scala n'a pas de fonction gcd intégrée.Scala a une fonction gcd intégrée, mais uniquement pour BigInt.la source