En tant qu'enfant, ma sœur m'a montré ce petit calcul d'amour pour voir combien de chances vous avez de nouer une relation fructueuse avec votre béguin. Tout ce dont vous avez besoin est 2 noms et un morceau de papier.
- John
- Jeanne
Ensuite, vous séparez ces noms avec le mot Loves . Vous pouvez écrire ceci sur une ligne ou sur de nouvelles lignes.
John
aime
Jane
Alors commence le calcul. Vous commencez par compter le nombre de fois où un personnage se produit de gauche à droite et dans le cas où vous utilisez de nouvelles lignes également de haut en bas. Chaque personnage est compté une fois. Ainsi, après avoir compté le J de John, vous n'avez pas à les compter à nouveau lorsque vous démarrez avec Jane. Le résultat de cet exemple sera le suivant:
J: 2 ([J] ohn | [J] ane)
O: 2 (J [o] hn | L [o] ves)
H: 1 (Jo [h] n)
N: 2 (Joh [n] | Ja [n] e)
__
L: 1 ([L] oves)
O: sauté
V: 1 (Lo [v] es)
E: 2 (Lov [e] s | Jan [e])
S: 1 (Amour ])
__
J: sauté
A: 1 (J [a] ne)
N: sauté
E: sauté
__
Résultat final: 2 2 1 2 1 1 2 1 1
La prochaine étape consistera à ajouter les chiffres qui vont de l’extérieur au milieu.
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 2 1 1 (1 + 2 = 3)
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (1)
__
Résultat: 3 3 3 3 1
Vous continuerez ainsi jusqu'à ce que vous ayez un nombre entier inférieur ou égal à 100.
3 3 3 3 1
4 6 3
76%
Il peut arriver que la somme de 2 chiffres devienne ≥ 10, dans ce cas, le nombre sera divisé en 2 à la ligne suivante.
Exemple:
5 3 1 2 5 4 1 8
13 (sera utilisé comme 1 3)
1 3 4 5 7
8 8 4 (8 + 4 = 12 utilisé comme 1 2)
1 2 8
92%
Exigences
- Votre programme devrait pouvoir accepter n'importe quel nom de longueur raisonnable (100 caractères)
- Les caractères [A..Z, a..z] sont autorisés.
- Insensible à la casse donc A == a
Gratuit pour vous de décider
- Comment gérer les caractères spéciaux (Ö, è, etc.)
- Inclure les noms de famille oui ou non, les espaces seront ignorés
- Toute langue est autorisée.
Le gagnant sera déterminé par vote le 28 et le 14 février.
Bonne codage
Ps C’est la première fois que je mets quelque chose ici, s’il ya un moyen de l’améliorer, n’hésitez pas à me le faire savoir = 3
Edit: Changement de date de fin en jour de la Saint-Valentin, pensant que ce serait plus approprié pour ce défi :)
la source
1-love_result
:-)Réponses:
Déclenchement
Attend l’entrée sous forme de deux mots séparés par des espaces (par exemple
John Jane
). Il est insensible à la casse, mais ne supporte que les caractères qui ne sont pas des caractères regex spéciaux (donc, n'utilisez pas(
ou*
en votre nom!). De plus, il n'attend que deux mots. Par conséquent, si votre amour est «Mary Jane», vous devez écrireMaryJane
un mot. sinon, il évaluera "YourName aime que Mary aime Jane".Explication
La partie la plus difficile a été de gérer le cas de nombre impair de chiffres: vous devez laisser le chiffre du milieu seul au lieu de l'ajouter à lui-même. Je pense que ma solution est intéressante.
Quand il vous reste quelque chose ≤ 100, la boucle se terminera, la réponse sera sur la pile et donc restituée.
la source
改
(chaîne-insensible à la casse) en réponse à ce défi, mais je ne vais pas m'en servir ici.Fonction
Ce programme attend l'entrée séparée par un espace (par exemple
John Jane
). Il est insensible à la casse pour les caractères AZ / az; pour tout autre caractère Unicode, il «confondera» deux caractères égaux entre 32 et 32 (par exemple,Ā
etĠ
, ou?
et_
). De plus, je n’ai aucune idée de ce que fera ce programme si l’entrée contient un NUL (\0
), alors n'utilisez pas ça :)De plus, comme StackExchange ajoute trop d’espacement des lignes, voici le texte brut sur pastebin . Vous pouvez également exécuter le code suivant dans la console JavaScript de votre navigateur pour le corriger ici:
$('pre').css('line-height',1)
Explication rapide
Le programme prend juste STDIN et appelle
Ḷ
avec.Ḷ
trouve le premier espace de la chaîne, le remplace parloves
et passe le résultat àỌ
.Ọ
prend à plusieurs reprises le premier caractère de la chaîne d'entrée, appelleṢ
avec elle et concatène le nombre d'occurrences sur une chaîne de résultat. Lorsque la chaîne d'entrée est vide, il appelleṾ
avec la chaîne de résultat.Ṿ
appelle de manière répétéeẸ
jusqu'à obtenir un résultat égal"100"
ou inférieur à 3. (100
peut réellement se produire: considérez l'entréelovvvv eeeeeess
). Lorsque c'est le cas, il ajoute"%"
et renvoie ce résultat.Ẹ
calcule une itération complète de l'algorithme de calcul de l'amour; c'est-à-dire qu'il faut une chaîne de chiffres et renvoie la chaîne de chiffres suivante.Ṛ
prend une botte de foin et une aiguille et trouve l'index de la première occurrence d' aiguille dans la botte de foin en utilisant le critère de fausse insensibilité à la casse (or 32
).Ṣ
prend une botte de foin et une aiguille et appliqueṚ
à plusieurs reprises pour supprimer toutes les instances de l' aiguille . Il retourne le résultat final après tous les retraits, ainsi que le nombre de retraits effectués.la source
Rubis
Imprime un coeur si la chance d'une relation est supérieure à 50%
Et imprime un cœur brisé si les chances sont inférieures à 50% :(
Branlant John ...
Quoi qu'il en soit, il est insensible à la casse et prend en charge les requêtes polygames (par exemple
ruby ♥.rb Alice Bob Carol Dave
).la source
APL, 80
Parce que l'
amour est amourcode-golf est code-golf (même si ce n'est pas le cas)Version obligatoire ♥ en forme de ︎:
La version golfée me donne un comportement quelque peu erratique, à cause d'un bogue avec
∪⍦
lequel j'étudie les développeurs de NARS:Mais j'ai pu l'exécuter par morceaux et obtenir le résultat correct:
la source
Javascript
Probablement pourrait être plus propre, mais cela fonctionne. Exemple verbeux
la source
Python
Eh bien, je pensais que c'était un code-golf ...
Ungolfed:
la source
reduce(list.__add__,xyz)
parsum(xyz,[])
. :)PHP
exemple de résultat
la source
GolfScript
Code de golf obligatoire dans GolfScript:
Accepte les entrées sous forme de noms séparés par des espaces, par exemple
la source
C #
la source
q[i] + q[j]
est 10 ou plus?Haskell
Ma version est assez longue, c'est parce que j'ai décidé de me concentrer sur la lisibilité, j'ai pensé qu'il serait intéressant de formaliser votre algorithme en code. J'agrège les nombres de caractères dans un pli gauche , il fait essentiellement boule de neige et l'ordre est dans l'ordre d'apparition dans la chaîne. J'ai également réussi à remplacer la partie de l'algorithme qui nécessitait normalement l'indexation de tableaux avec le pliage de liste . En fin de compte, votre algorithme implique essentiellement de plier la liste de nombres en deux et d'ajouter des nombres alignés. Il y a deux cas de pliage, même les listes sont bien divisées au milieu, les listes impaires se plient autour d'un élément central et cet élément ne participe pas en plus. La fission prend la liste et scinde des nombres qui ne sont plus des chiffres uniques, comme> = 10 . Je devais écrire mon propre dépli , je ne sais pas si c'est en fait un dépli , mais il semble faire ce dont j'ai besoin. Prendre plaisir.
Quelques résultats:
"Romeo" "Juliet" 97% - Les tests empiriques sont importants
"Romeo" "Julier" 88% - Version abrégée moderne ...
"Horst Draper" "Jane" 20%
"Horst Draper" "Jane (Cheval)" 70% - Il y a eu un développement ...
"Bender Bender Rodriguez" "Fenny Wenchworth" 41% - Bender dit que "Plier c'est pour les femmes!"
"Philip Fry" "Turanga Leela" 53% - Vous pouvez voir pourquoi il a fallu 7 saisons pour qu'ils épousent
"Maria" "Abraham" - 98%
"John" "Jane" 76%
la source
Rubis
Minified:
Appeler:
la source
l=->a{...}
au lieu del=lambda do|a|...end
, et vous pouvez également fairel[...]
au lieu del.call(...)
.Python 3
Une solution simple qui n'utilise aucun module. I / O est assez jolie.
J'ai utilisé l'erreur de capture en tant que sauvegarde pour le moment où le deuxième itérateur est hors limites; s'il détecte l'erreur d'index de Python, il suppose 1. Bizarre, mais cela fonctionne.
Voici un exemple de parcours:
la source
for
surnames
directement?25211111111.363221.485.98
. Je pense que votre code ne parvient pas à ajouter le 5 "a"Java
Et si le nombre est égal à 10? Je viens d'ajouter 1 et 0, est-ce correct?
J'ai décidé d'ignorer le cas.
contribution:
sortie:
contribution:
sortie:
la source
C
Il pourrait y avoir beaucoup d'amélioration, mais c'était amusant à coder.
Et bien sûr, version golfée obligatoire: 496
la source
Python 3
Cela prendra deux noms en entrée. décaper les espaces supplémentaires et ensuite calculer l'amour. Consultez la sortie pour plus de détails.
contribution:
sortie:
Ou essayez celui-ci;)
contribution:
sortie:
la source
k, 80
En voici quelques exemples:
la source
J
Voici un exemple simple en J:
Il prend les noms sur la ligne de commande, par exemple:
la source
Sensationnel
Voici la version groovy, avec des tests.
Explication:
CodeGolf Groovy, 213 caractères
Voyant qu'il s'agit de codegolf, nous pouvons aligner les fermetures et en arriver à ceci:
Enregistrez-le en tant que lovecalc.groovy. courir "groovy lovecalc john jane"
Sortie:
la source
Java
Cela prend 2 paramètres de chaîne au début et affiche le nombre de chaque caractère et le résultat.
Sûrement pas le plus court (Java), mais clair et lisible.
Donc si vous appelez
vous obtenez la sortie
la source
R
Je ne gagnerai aucun prix de compacité, mais je me suis bien amusé quand même:
Testé: valable pour 'john' & 'jane' et pour 'romeo' & 'juliet'. par mon commentaire sous la question,
la source