Écrivez un programme qui accepte un seul mot en minuscule en entrée et génère le nombre de paires de lettres qui ont le même nombre de lettres entre elles dans le mot que dans l'alphabet.
Par exemple, dans le mot «nature», nous avons 4 paires:
- nr: puisqu'il y a trois lettres entre elles à l'intérieur du mot (a, t, u) et trois lettres entre elles dans l'alphabet (o, p, q)
- ae: puisqu'il y a trois lettres entre elles à l'intérieur du mot (t, u, r) et trois lettres entre elles dans l'alphabet (b, c, d)
- tu: puisqu'il n'y a pas de lettres entre elles à l'intérieur du mot et pas de lettres entre elles dans l'alphabet
- tr: puisqu'il y a une lettre entre eux à l'intérieur du mot (u) et une lettre entre eux dans l'alphabet (s)
Puisqu'il y a quatre paires, la sortie dans ce cas devrait être 4.
rjjjnfffr
? Serait-ce une paire (nr
) ou deux paires (nr
etrn
)? Et qu'en est-ilabzab
? Est-ce deux pairesab
ou une seule?Réponses:
Pyth, 19 octets
Essayez-le en ligne: Démonstration
Explication:
la source
R, 110 octets
Dégolfé:
la source
Octave, 41 octets
la source
CJam, 36 octets
Essayez-le en ligne.
la source
J, 27 octets
Usage:
Explication:
Essayez-le en ligne ici.
la source
CJam, 25 octets
Essayez-le en ligne
Explication:
la source
JavaScript (ES6), 98 octets
Usage
Explication
la source
Python 2, 91 caractères
la source
MATLAB, 84 octets
Cette ligne demande une chaîne en entrée. Il crée ensuite toutes les paires de lettres possibles et fait de même pour leurs indices correspondants. Ensuite, nous déterminons si la différence (absolue) des valeurs correspond pour finalement résumer tous les cas où elle le fait. Le résultat s'affiche dans la fenêtre de commande.
la source
JavaScript ES7, 93
Utilisation de la compréhension des tableaux . ES6 avec
.map.map.map
est de 2 octets de plus.Testez l'exécution de l'extrait ci-dessous avec Firefox
la source
PowerShell,
114100octetsAssez simple, mais utilise quelques astuces.
param(..)
prend notre entrée, l'enregistre$a
.$b
comme étant celle.length
de notre entrée. Cela enregistre un octet plus tard.0..($b-1)|%{..}
est l'équivalent d'unefor($i=0;$i-le($b-1);$i++){..}
boucle, mais beaucoup plus courte.$i
pour que cela continue ...($_+1)..$b|%{..}
lafor
boucle suivante , car$_
est uniquement positionnelle à la boucle intérieure.+
pour enregistrer un tas d'octets) correspond-eq
à la différence de position dans le tableau. Comme nous recevons explicitement des entrées en minuscules, nous n'avons pas besoin de faire de conversion de casse. Cette instruction renverra soitTrue
ouFalse
.$o
, alorsTrue
nous ajouterons 1, tandis queFalse
nous ajouterons 0.$o
. Notez que nous devons faire la même astuce avec cast+
pour éviter d'imprimerFalse
s'il n'y a pas de correspondance.la source
Rubis, 74
Rien de super intéressant ici. J'aurais aimé utiliser
eval("s[i].#{["succ"]*(j-i)*?.}")
mais ... semblait trop long.la source
Matlab
(94)(80)la fonction binomiale lève une stupide exception lorsque k est plus grand que n et que je ne peux pas attraper d'exceptions à l'intérieurQui a besoin d'une fonction intégrée ??arraycell
fonction, sinon je pourrais la jouer plus.Maintenant, je pouvais simplement le faire à la main, en simplifiant binôme (n, 2) = n / (2 (n-2)!) = N (n-1) / 2. remarquez que cette dernière valeur représente la somme des entiers de 1 à n-1, cela ne lève aucune exception dans matlab, Dieu bénisse les maths.
Ps: cette méthode est différente de celle de slvrbld
Exécution
la source