Crie um programa que conte o número total de letras comuns a dois nomes e encontre o produto de seus comprimentos para funcionar como um "testador de amor".
Condições: você pode não obter uma resposta 1: 1 (sendo 3 em 3, etc.).
Entrada
Dois nomes de STDIN ou alternativa mais próxima.
Resultado
Calcule x
como o número total de letras em comum entre os dois nomes, ignorando maiúsculas e minúsculas. Calcule y
como o produto dos comprimentos dos nomes. Então a saída, para STDOUT ou alternativa mais próxima, é
Name1 and Name2 have x out of y chances of love.
Exemplos
Entrada:
Wesley
Polly
Resultado:
Wesley and Polly have 2 out of 30 chances of love.
Wesley e Polly têm 2 letras em comum, y
e l
, e o produto de seus comprimentos é 6 * 5 = 30.
Entrada:
Bill
Jill
Resultado:
Bill and Jill have 3 out of 16 chances of love.
Bónus
- Subtraia 30 bytes para usar frações simplificadas, ou
x out of y
seja, na forma totalmente reduzida.
Entre os melhores:
A classificação será determinada por idiomas. O código de golfe termina em 17 de outubro às 22h20. Horário de verão do Pacífico (Califórnia)
Prêmios de Rep
- Você receberá 10 representantes (um voto positivo) por estar entre os 5 primeiros (exceto o primeiro lugar).
- Você receberá 15 representantes (entrada aceita) por ser o primeiro lugar.
- Você também pode receber uma recompensa de outra pessoa.
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma. **
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
** Fragmento de pilha de Sign That Word por Kslkgh
Parabéns pelo seguinte:
- Vencedor Dennis (Pitth)
- Dennis (CJam)
- NBZ (APL)
- Molarmanful (JavaScript ES6)
- Alex A. (Julia)
Aaron\nAhmad
? Ousamename\nsamename
?a
eb
de alguma letra, eles contam paramin(a,b)
repetições?Respostas:
Pitão, 40 bytes
O código tem 70 bytes e se qualifica para o bônus de -30 bytes .
Experimente online.
fonte
Dyalog APL ,
9491-30 = 61 bytesNormalmente, o golfe APL resulta em um código que é mais compacto - mas não mais complexo - do que o normal, mas nesse caso eu salvo caracteres de maneira feia:
,⍪'out of' 'chances of'
crie uma tabela 2 × 2 de números (esquerda) e textos (direita)×/≢¨⍵
de comprimentos,32|⎕UCS¨⍵
harmonize os valores UCS maiúsculos e minúsculos≢⊃∩/
, a interseção dos dois conjuntos⊢÷∨/
divide o registro e o produto com seu GCD o,' love.',⍨∊
transforma em uma lista simples e anexa amor.⍵,⍪'and' 'have'
crie uma tabela 2 × 2 de nomes (esquerda) e textos (direita)∊' ',¨
acrescente um espaço a cada célula da tabela e, em seguida, faça uma lista simples1↓
soltar o espaço supérfluo inicialGraças a ngn por -3 bytes.
fonte
'Wesley' 'Polly'
. Se você acha que isso seria mais justo, sinta-se livre para acrescentar⎕
(U + 2395) para, em seguida, final da linha (após a}
), e ajustar o placar para 65.Javascript ES6, 123 bytes
Tanto por "amor" ... eu realmente poderia fazer com menos bytes.
Execute o trecho de código no Firefox.
Mostrar snippet de código
fonte
Julia, 129 bytes
O código tem 159 bytes, mas é qualificado para o bônus -30.
Provavelmente isso poderia ser reduzido se não fosse pelo bônus, mas eu queria mostrar o tipo de número racional de Julia. :)
Ungolfed:
A
Rational()
função constrói um objeto do tipoRational
que possui camposnum
eden
, correspondendo ao numerador e denominador, respectivamente. O benefício de usar esse tipo aqui é que Julia faz a redução para nós; não precisamos nos preocupar em reduzir a fração.fonte
CJam, 55 bytes
O código tem 85 bytes de comprimento e se qualifica para o bônus de -30 bytes .
Experimente on-line no intérprete CJam .
Como funciona
fonte
Dyalog APL, 84-30 = 54 bytes
∊' and ' ' have' 'out of' 'chances of love.',¨⍨⊢,{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}(,÷∨)(×/≢¨)
Este é um trem , inspirado na resposta de Adám .
×/≢¨
produto dos comprimentos{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}
chances de amor(,÷v)
a concatenação dividida pelo GCD; entre as duas expressões acima, isso reduz a fração⊢,
preceda os nomes,¨⍨
embaralha as cordas à esquerda com os valores à direita∊
aplainarComputação "Chances de amor" em detalhes:
{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵} ↑⍵ arrange the names in a 2×N matrix, pad with spaces ⎕ucs take ascii codes ⍉ transpose the matrix as N×2 32| modulo 32 to case-fold 1↑¨⍨- for each X create a vector 0 0...0 1 of length X ↑ arrange into a 3d array, pad with 0s +⌿ 1st axis sum, obtain freqs per letter and per name ⌊⌿ 1st axis min, obt. nr of common occurrences per letter +/ sum
teste , teste2
fonte
Java 8, 192 bytes
Ex:
fonte
Ruby, 153 bytes
Mais do que eu esperava. Não sei se o bônus de 30 bytes se aplica a isso.
fonte
Python 2.7, 161 bytes
Teste aqui: http://ideone.com/jeoVgV
E aqui está uma versão que simplifica a fração:
Infelizmente a pontuação dessa pessoa é 219-30 = 189 ...
fonte