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>
Respostas:
Geléia , 7 bytes
Experimente online!
Usa convolução (que eu contribuí com Jelly: D)
Como funciona
fonte
<⁵Ạ
por output sem um booleano NÃO executado nele.JavaScript (ES6), 67 bytes
Recebe entrada como 2 strings na sintaxe de currying
(a)(b)
. Retornafalse
para fácil outrue
para não fácil.Casos de teste
Mostrar snippet de código
Alt. versão (falha),
645552 bytesSalva 3 bytes usando cadeias de caracteres, conforme sugerido por @Shaggy
Como apontado por @LeakyNun, esse método falharia em alguns números inteiros grandes e específicos
Recebe entrada como 2 strings na sintaxe de currying
(a)(b)
. Retornatrue
para fácil oufalse
para não fácil.Casos de teste
Mostrar snippet de código
Quão?
A idéia aqui é expor explicitamente os carregamentos inserindo zeros antes de cada dígito de cada fator.
Exemplos:
331 x 1021 se torna 30301 x 1000201 , o que fornece 30307090501 em vez de 337951 . Ao adicionar um zero inicial ao resultado e agrupar todos os dígitos por 2, isso pode ser escrito como 03 03 07 09 05 01 . Todos os grupos têm menos de 10 , o que significa que não haveria nenhum resultado na multiplicação padrão.
431 x 1021 torna-se 40301 x 1000201 , que fornece 40309100501 e pode ser gravado como 04 03 09 10 05 01 . Desta vez, temos um 10 que revela um carry na multiplicação padrão.
fonte
108
o meio bagunça seu algoritmo)Alice , 30 bytes
Experimente online!
Saídas
1
para fácil e0
difícil.Os números são fáceis de multiplicar se e somente se a soma do dígito do produto for igual ao produto da soma do dígito.
fonte
MATL , 10 bytes
Saídas
0
para fácil,1
para difícil.Experimente online! Ou verifique todos os casos de teste .
Explicação
fonte
R ,
13511010986 bytesExperimente online!
Recebe entrada como strings.É feio, mas funciona ™.Agora, ele usa uma abordagem de convolução, como na resposta de Leaky Nun , de modo que recebe entradas como números inteiros e retorna
TRUE
para números difíceis de multiplicar eFALSE
fáceis de multiplicar.Eu sempre tive alguns problemas para portar abordagens de convolução no passado, mas hoje finalmente li a documentação :
O que é bobo. Portanto, a extração de dígitos é revertida
n
e se transforma em um porto da resposta de Leaky Nun.fonte
Python 2 , 88 bytes
Toma dois números inteiros como entrada e retorna
False
(fácil de multiplicar) ouTrue
(não).Experimente online! (muito lento para um dos casos de teste)
fonte
len(`n+m`)
na verdade falharia por 40, 30 .len(`n+m`)+1
?len(`n`+`m`)
deve fazer embora.JavaScript (Node.js) ,
43413736 bytesObrigado @ Dennis pela idéia de usar interpolação de string nesta resposta e economize 4 bytes!
Obrigado @ ØrjanJohansen por -1!
Experimente online!
É claro que quando a base de destino é menor que a base original (como na minha resposta Jelly, a base é 2), ela
<
deve ser invertida.fonte
Wolfram Language (Mathematica) ,
75666556 bytesExperimente online!
Recebendo 2 entradas de string
Explicação:
-9 para mudar para usar string como entrada
-1 para usar o operador infix
-9 Obrigado @MartinEnder pela
Max
funçãofonte
Python 2 ,
158135123113 113 bytes-12 bytes graças a Freira Furada -10 bytes graças a ovs
Experimente online! ou Experimente todos os casos de teste
fonte
all(d[k]<10for k in d)
funciona ou é apenas Python 3?Julia 0.6 , 30 bytes
Experimente online!
A entrada é uma tupla de números, a saída é
true
para números difíceis de multiplicar efalse
fáceis..
é um aplicativo de função elemento a elemento....
expande a tupla (de listas de dígitos inteiros) para duas entradas separadas daconv
função.fonte
Python 3 ,
5835 134039 bytesParece que tive essa ideia duas horas tarde demais .
Obrigado a @ ØrjanJohansen por jogar fora um byte!
Experimente online!
fonte
SNOBOL4 (CSNOBOL4) ,
268264247246243131 bytesExperimente online!
Portos a abordagem por Nitrodon . Acho que é a primeira vez que defino uma função no SNOBOL,
D
para soma de dígitos.versão antiga, 243 bytes:
Experimente online!
Entrada no STDIN separada por novas linhas, saída para STDOUT: uma única nova linha para fácil multiplicação e nenhuma saída para não fácil multiplicar.
Isso não vai ganhar nenhum prêmio, mas apresenta outra abordagem (bem, realmente essa é a abordagem ingênua). Eu não acho que poderia escrever isso no cubix, mas o SNOBOL é duro o suficiente para trabalhar como está.
Como recebe a entrada como uma sequência, isso funcionará para qualquer entrada com menos de 512 dígitos cada; Não tenho 100% de certeza de quão grandeARRAY
pode ser o SNOBOL.INPUT é armazenado em buffer nesta versão do SNOBOL para ter uma largura máxima de 1024 caracteres; todos os outros caracteres são perdidos. Parece que um ARRAY pode ser bastante grande; bem acima das 2048 células necessárias.
fonte
Carvão , 38 bytes
Experimente online! Link é a versão detalhada do código. Produz a
-
quando os números são fáceis de multiplicar. Explicação:Inicialize
z
com uma matriz de zeros grande o suficiente (soma dos comprimentos de entradas).Faça um loop sobre os índices das entradas
q
eh
.Execute um passo da multiplicação longa.
Verifique se há carregamentos.
fonte
Pari / GP , 52 bytes
Experimente online!
fonte
Haskell,
8281 bytesOs números são tomados como cadeias. Retorna
False
se os números forem fáceis de multiplicar eTrue
caso contrário.Experimente online!
Eu acho que é diferente o suficiente da resposta de @ Laikoni . Como funciona:
fonte
Haskell ,
4544 bytesEditar:
==
para<
.Pensei nisso antes de olhar para as outras respostas, depois descobri que a Alice usava a mesma idéia básica. Postando assim mesmo, já que é mais curto que as outras respostas de Haskell.
?
pega dois números inteiros e retorna aBool
. Use como331?1021
.False
significa que a multiplicação é fácil.Experimente online!
s
é uma função que calcula a soma dos dígitos de um número inteiro. (read.pure
converte um caractere de um dígito em um número inteiro.)fonte
Ruby , 69 bytes
Experimente online!
fonte
Haskell , 123 bytes
Experimente online! Exemplo de uso:
"331" % "1021"
rendimentosTrue
.fonte
Perl 5 , 100 + 2 (
-F
) = 102 bytesExperimente online!
produz falso para fácil, verdadeiro para não fácil.
fonte
Geléia , 8 bytes
Experimente online!
Uma porta da minha resposta Javascript . Não é menor do que a resposta existente da Jelly, porque a Jelly possui uma poderosa convolução incorporada.
Tome entrada como uma lista de dois números. Retorna
1
para fácil,0
para não fácil.Explicação:
fonte
C (gcc) , 104 bytes
Basicamente, faça uma multiplicação "à mão" em r [] e defina o valor de retorno se alguma coluna for maior que 9, pois isso significaria uma ocorrência.
Surpreendentemente, isso foi mais curto do que minha primeira tentativa, que tomou as seqüências de caracteres como argumentos.
Experimente online!
fonte