Créez un programme qui compte le nombre total de lettres communes à deux noms et trouve le produit de leurs longueurs pour fonctionner comme un "testeur d'amour".
Conditions: vous ne pouvez pas obtenir de réponse 1: 1 (soit 3 sur 3, etc.).
Contribution
Deux noms de STDIN ou de l'alternative la plus proche.
Production
Calculez x
le nombre total de lettres en commun entre les deux noms, en ignorant la casse. Calculez y
comme le produit de la longueur des noms. Ensuite, la sortie, vers STDOUT ou l'alternative la plus proche, est
Name1 and Name2 have x out of y chances of love.
Exemples
Contribution:
Wesley
Polly
Production:
Wesley and Polly have 2 out of 30 chances of love.
Wesley et Polly ont 2 lettres en commun, y
et l
, et le produit de leurs longueurs est 6 * 5 = 30.
Contribution:
Bill
Jill
Production:
Bill and Jill have 3 out of 16 chances of love.
Bonus
- Soustrayez 30 octets pour l'utilisation de fractions simplifiées, c'est
x out of y
-à- dire sous une forme entièrement réduite.
Classement:
Le classement sera déterminé par les langues. Le golf de code se termine le 17 octobre à 22 h 20, heure avancée du Pacifique (Californie)
Prix des représentants
- Vous recevrez 10 rep (un vote positif) pour être dans le top 5 (sauf la première place).
- Vous recevrez 15 rep (entrée acceptée) pour être la première place.
- Vous pourriez également obtenir une récompense de prime d'une autre personne.
Voici un extrait de pile pour générer à la fois un classement régulier et un aperçu des gagnants par langue. **
Pour vous assurer que votre réponse apparaît, veuillez commencer votre réponse avec un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les rayant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
** Extrait de pile de Sign That Word par Kslkgh
Félicitations à ce qui suit:
- Gagnant Dennis (Pyth)
- Dennis (CJam)
- NBZ (APL)
- molarmanful (JavaScript ES6)
- Alex A. (Julia)
Aaron\nAhmad
? Ousamename\nsamename
?a
etb
d'une certaine lettre, ceux-ci comptent-ils pour lesmin(a,b)
répétitions?Réponses:
Pyth, 40 octets
Le code fait 70 octets et se qualifie pour le bonus de -30 octets .
Essayez-le en ligne.
la source
Dyalog APL ,
9491-30 = 61 octetsHabituellement, le golf APL donne un code plus compact - mais pas plus complexe - que la normale, mais dans ce cas, j'enregistre les caractères de façon laide:
,⍪'out of' 'chances of'
créer un tableau 2 × 2 de nombres (à gauche) et de textes (à droite)×/≢¨⍵
produit de longueurs32|⎕UCS¨⍵
harmoniser les valeurs UCS majuscules et minuscules≢⊃∩/
correspondent l'intersection des deux ensembles⊢÷∨/
diviser le décompte et le produit avec leur GCD en,' love.',⍨∊
faire une liste simple et ajouter amour.⍵,⍪'and' 'have'
créer un tableau 2 × 2 des noms (à gauche) et des textes (à droite)∊' ',¨
ajouter un espace à chaque cellule du tableau puis en faire une liste simple1↓
supprimer l'espace superflu initialMerci à ngn pour -3 octets.
la source
'Wesley' 'Polly'
. Si vous pensez que ce serait plus juste, n'hésitez pas à ajouter⎕
(U + 2395) jusqu'à la toute fin de la ligne (après le}
) et ajustez le score à 65.Javascript ES6, 123 octets
Voilà pour "l'amour" ... Je pourrais vraiment faire avec moins d'octets.
Exécutez l'extrait de code dans Firefox.
Afficher l'extrait de code
la source
Julia, 129 octets
Le code fait 159 octets mais il bénéficie du bonus de -30.
Cela pourrait probablement être raccourci en n'optant pas pour le bonus, mais je voulais montrer le type de nombre rationnel de Julia. :)
Non golfé:
La
Rational()
fonction construit un objet de typeRational
qui a des champsnum
etden
, correspondant respectivement au numérateur et au dénominateur. L'avantage d'utiliser ce type ici est que Julia effectue la réduction pour nous; nous n'avons pas à nous soucier de réduire la fraction nous-mêmes.la source
CJam, 55 octets
Le code fait 85 octets de long et se qualifie pour le bonus de -30 octets .
Essayez-le en ligne dans l' interpréteur CJam .
Comment ça fonctionne
la source
Dyalog APL, 84-30 = 54 octets
∊' and ' ' have' 'out of' 'chances of love.',¨⍨⊢,{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}(,÷∨)(×/≢¨)
Ceci est un train , inspiré par la réponse d' Adám .
×/≢¨
produit des longueurs{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}
les chances de l'amour(,÷v)
la concaténation divisée par le GCD; entre les deux expressions ci-dessus, cela réduit la fraction⊢,
ajouter les noms,¨⍨
mélange les cordes à gauche avec les valeurs à droite∊
aplatirLe calcul "Chances of love" en détail:
{+/⌊⌿+⌿↑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
test , test2
la source
Java 8, 192 octets
Ex:
la source
Rubis, 153 octets
Plus longtemps que prévu. Je ne sais pas si le bonus de 30 octets s'applique à cela.
la source
Python 2.7, 161 octets
Testez-le ici: http://ideone.com/jeoVgV
Et voici une version qui simplifie la fraction:
Malheureusement, le score de celui-ci est de 219-30 = 189 ...
la source