Étant donné un nombre binaire A en entrée avec d> 1 chiffres, sortez un nombre binaire B avec d chiffres selon les règles suivantes pour trouver le nième chiffre de B:
Le premier chiffre de B est nul si les premier et deuxième chiffres de A sont égaux; sinon, c'est un.
Si 1 <n <d, alors si les (n-1) ème, nième et (n + 1) ème chiffres de A sont égaux, alors le nième chiffre de B est nul; sinon, c'est un.
Le dième chiffre de B est nul si les (d-1) e et dième chiffres de A sont égaux; sinon, c'est un.
Règles
Le format d'entrée / sortie chaîne / liste est correct. Un autre moyen autorisé d'entrée / sortie est un entier suivi du nombre de zéros précédents (ou suivant le nombre de zéros précédents).
Faites votre code aussi court que possible.
Cas de test
00 -> 00
01 -> 11
11 -> 00
010111100111 -> 111100111100
1000 -> 1100
11111111 -> 00000000
01010101 -> 11111111
1100 -> 0110
1100 -> 0110
(les 2 premiers chiffres de la sortie sont toujours identiques dans tous les autres cas de test; idem pour les 2 derniers chiffres)Réponses:
Haskell,
595854 octetsEssayez-le en ligne!
Edit: @ Ørjan Johansen a enregistré 4 octets. Merci!
la source
"0110"!!(a+b+c)
enregistre un octet.[last s]
peut être déplacé à lascanr
valeur initiale.Gelée , 9 octets
Essayez-le en ligne!
E / S sous forme de liste de chiffres.
Explication:
la source
.ị
- Obtient l'élément à l'index 0,5 . Puisque floor (0,5) ≠ ceil (0,5) ,ị
renvoie les éléments aux indices 0 et 1 . Jelly est un indexé, donc 0 saisit en fait le dernier élément.Ṛ
inverse la paire (car ils sont retournés commelast, first
). ensuitej
la paire sur l'entrée et laṡ3
divise en tranches superposées de longueur 3.E€
vérifie (pour chaque liste) si tous les éléments sont égaux, et les¬
annule logiquement.05AB1E , 6 octets
Les E / S se présentent sous la forme de tableaux de bits.
Essayez-le en ligne!
Comment ça marche
la source
05AB1E , 11 octets
Essayez-le en ligne! ou comme suite de tests
Explication
la source
Haskell ,
666159 octetsEssayez-le en ligne! L'entrée est une liste de zéros et de uns, la sortie est une chaîne. Exemple d'utilisation:
g [0,1,0,1,1,1,1,0,0,1,1,1]
rendements"111100111100"
.Solution précédente de 61 octets:
Essayez-le en ligne!
la source
J ,
2614 octetsCrédit à la solution 05AB1E d'Emigna
Essayez-le en ligne!
Tentative originale
Essayez-le en ligne!
la source
Python 3 , 58 octets
Essayez-le en ligne!
la source
Husk ,
1511 octetsPrend la contribution sous forme de liste, essayez-le en ligne! Ou essayez celui-ci qui utilise des chaînes pour les E / S.
Explication
la source
Gelée , 8 octets
Les E / S se présentent sous la forme de tableaux de bits.
Essayez-le en ligne!
Comment ça marche
la source
I0,0jI¬¬
JavaScript (ES6), 45 octets
Prend l'entrée comme un tableau de caractères. Renvoie un tableau d'entiers.
Cas de test
Afficher l'extrait de code
Commenté
la source
Mathematica, 56 octets
Essayez-le en ligne!
la source
Gelée , 16 octets
Essayez-le en ligne!
J'allais jouer au golf, mais Erik a déjà une solution plus courte et jouer au mien rapprocherait le mien du sien. Je joue toujours au golf, mais je ne mettrai pas à jour à moins que je puisse le battre ou trouver une idée unique.
Explication
la source
Perl 5 , 62 + 1 (
-n
) = 63 octetsEssayez-le en ligne!
la source
s;..$;
construction à la fin est astucieuse. Je dois m'en souvenir.Husk , 10 octets
Essayez-le en ligne!
Merci à Zgarb pour -1 octet.
la source
Ẋo±≠
enregistre un octet.Japt ,
141312 octetsPartiellement porté depuis la solution Jelly de Dennis. L'entrée et la sortie sont des tableaux de chiffres.
Un octet enregistré grâce à ETHproductions.
Essayez-le
Explication
Entrée implicite du tableau
U
.ä-
obtient les deltas du tableau.pT
pousse 0 à la fin du tableau.äaT
ajoute d'abord un autre 0 au début du tableau avant d'obtenir les deltas absolus.mg
mappe les éléments du tableau en retournant le signe de chaque élément comme -1 pour les nombres négatifs, 0 pour 0 ou 1 pour les nombres positifs.la source
.ø
dans la réponse 05AB1E. Je pense que cela ferait 1 octet plus court ...A.ä()
qui préfèrent son deuxième argument, vous pouvez ajouter un troisième argument qui est ajouté. Donc, dans ce cas,pT äaT
pourrait deveniräaTT
pour une économie de 2 octets.Python 3 , 54 octets
Les E / S se présentent sous la forme de tableaux booléens.
Essayez-le en ligne!
la source
J, 32 octets
Comment ça marche:
J'ai laissé de côté des @ et des parenthèses, qui s'assurent juste que ça va bien ensemble.
Un exemple pas à pas:
la source
Rétine , 35 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication: L'expression régulière commence par faire correspondre tour à tour chaque chiffre d'entrée. Un groupe de capture essaie de faire correspondre un chiffre différent avant ou après le chiffre considéré. Le
?
suffixe permet alors à la capture de correspondre à 0 ou 1 fois;$#2
transforme cela en chiffre de sortie.la source
Pyth , 15 octets
Essayez-le ici!
Alternativement:
mtl{d.:s+hQeBQ3
..aM._M.+++Z.+QZ
.Cela ajoute le premier élément et ajoute le dernier élément, puis obtient toutes les sous-chaînes qui se chevauchent de longueur 3, et prend finalement le nombre d'éléments distincts dans chaque sous-liste et le décrémente. Ce gâchis a été fait sur mobile à minuit donc je ne serais pas surpris s'il y a des golfs faciles.
la source
Gaia , 9 octets
Essayez-le en ligne!
Explication
Gaia , 9 octets
Essayez-le en ligne!
la source
C , 309 octets
Pas exactement une langue digne du golf, mais mérite néanmoins une réponse. Essayez-le ici !
Explication
la source
APL + WIN, 29 octets
Invite à saisir l'écran en tant que vecteur de chiffres et génère un vecteur de chiffres.
Explication
la source
SNOBOL4 (CSNOBOL4) , 273 octets
Essayez-le en ligne!
la source
C (tcc) ,
646256 octetsLes E / S sont sous forme de chaînes. La fonction f modifie son argument s en place.
Essayez-le en ligne!
la source
Lisp commun, 134 octets
Essayez-le en ligne!
la source