Contribution
- Liste de 1 à 255 entiers positifs (inclus), chacun compris entre 1 et 2 32 - 1 (inclus).
- Votre format d'entrée n'a pas besoin d'être identique aux cas de test.
- La saisie sans zéros est requise pour être acceptée.
- La saisie avec des zéros au début n'est pas obligée d'être acceptée.
- Vous pouvez utiliser le délimiteur que vous souhaitez entre les entiers.
- Un entier peut être représenté par une chaîne mais les chiffres individuels d'un entier spécifique doivent être contigus.
- Vous pouvez choisir d'utiliser n'importe quelle base pour l'entrée (y compris binaire et unaire), à condition que la sortie se trouve également dans cette base.
Sortie
- Un seul entier.
- La sortie ne doit pas avoir de zéros au début.
- La sortie doit être dans la même base que l'entrée.
- La sortie peut être calculée comme vous le souhaitez mais doit correspondre au résultat du calcul suivant:
Calcul du biplex
- Les bits d'une représentation binaire sont numérotés à partir de la droite à partir de zéro, le bit i est donc dans la colonne représentant 2 i .
- Le i ème BITSUM est la somme des i ème bits des représentations binaires de chacun des nombres d'entrée.
- Le maximum de bits est la valeur la plus élevée prise par les bits.
- Le minimum de somme est la valeur la plus basse non nulle prise par les sommes.
- La i ième chiffre de la représentation binaire de la sortie est la suivante :
- 1 si le i ème BITSUM est égale au maximum ou le minimum BITSUM BITSUM.
- 0 sinon.
Exemple travaillé
Cet exemple utilise binaire pour les entrées et les sorties.
Input: 100110
1101110
1100101
_______
Bitsums: 2301321
Output: 101101
Le nombre maximal de bits est de 3 et le nombre minimal de bits est de 1, de sorte que la sortie comporte des 1 partout où le nombre total de bits est de 3 ou 1, et des 0 partout ailleurs.
Cas de test
Les cas de test sont sous la forme:
Input => Output
Les cas de tests en binaire:
[1] => 1
[10] => 10
[1, 10, 101] => 111
[11111111111111111111111111111111] => 11111111111111111111111111111111
[10010010010010010010010010010010, 10101010101010101010101010101010, 11011011011011011011011011011011] => 11100011100011100011100011100011
[10001011100010100110100101001001, 10110000111110010000111110111010, 1101110001101101011010010100101, 1010101010001011101001001010101] => 11
Les mêmes cas de test en décimal:
[1] => 1
[2] => 2
[1, 2, 5] => 7
[4294967295] => 4294967295
[2454267026, 2863311530, 3681400539] => 3817748707
[2341103945, 2969112506, 1849078949, 1430639189] => 3
Classement
Merci à l'extrait de classement de Martin
L'opérateur a été nommé biplex, abréviation d'extrema de plan binaire, à la suite d'une discussion en discussion .
code-golf
base-conversion
binary
trichoplax
la source
la source
You may choose to use any base for input and output (including binary and unary), provided they are both in the same base
. Alors oui,Réponses:
Gelée, non en compétition
14 octets Cette réponse est sans concurrence, car le défi était antérieur à la création de Jelly.
Essayez-le en ligne!
Comment ça marche
la source
Pyth,
26 à25 octetsEssayez-le en ligne: démonstration ou suite de tests
Explication
la source
_B
utilisation est brillanteJ,
3130242321 octetsIl s'agit d'un verbe monadique tacite qui prend une liste d'entiers décimaux et renvoie leur biplex décimal.
Merci à @Zgarb pour ses suggestions, qui ont permis d’économiser 4 octets directement et d’ouvrir la voie à 2 autres!
Merci à @randomra pour avoir joué 2 octets de plus!
Cas de test
Comment ça marche
la source
Minkolang 0.10 ,
10979 octetsL'entrée et la sortie sont en décimal. Essayez ici.
Explication
Ancienne version:
Essayez-le ici!
Explication
Le noeud du problème est que la fonction array est fortement utilisée (
a A
) pour stocker les bits, dont les minimum et maximum sont trouvés, puis1
s et0
s sont générés de manière appropriée, avec un vidage des0
s principaux à deux endroits.la source
Brainfuck , 619 octets
La première réponse a été trop longue ici, alors j'ai pensé en faire une bonne!
Est-ce que ... Est-ce que j'ai gagné?
Ce programme attend les nouvelles lignes (ASCII
10
) après chaque nombre binaire et nécessite un espace (ASCII32
) à la fin.Tests effectués:
(Newlines ajoutées après chaque cas avec
++++++++++.
ajouté à la fin du programme)Explication
Encore un travail en cours, mais un lent. Par manque de temps, je viens de copier les notes que j'ai prises lors de l'écriture de ce programme, ce qui suffira pour une explication pour le moment:
la source
CJam, 27 octets
Accepte les entrées sous forme de liste de style CJam base 10. Testez-le ici. Vous pouvez également exécuter tous les cas de test (le script ignore la sortie attendue et convertit le format d'entrée si nécessaire).
Explication
la source
1
dans ces bits s qui correspondent aux plans de bits où les minima et les maxima se sont produits.JavaScript (ES6),
215185176 octetsUsage
Explication
la source
f=(a)=>{}
=f=a=>{}
2) Vous pouvez transformer vosfor...in
boucles enfor...of
boucles en économisant quelques octets:for(i in a)for(b=a[i]...
=for(i of a)for(b=i...
,for(i in s)r=s[i],d=...
=for(r of s)d=...
3) OU au niveau du bit OU|
change automatiquement la valeur true à 1 et la valeur false à 0, de sorte queo+=r==q|r==d?1:0;
le même résultat soito+=r==q|r==d;
.return parseInt(o,2)
:return+('0b'+o)
s[l-d-1]=(s[l-d-1]|0)
pars[T=l-d-1]=(s[T]|0)
. Pour raser plus de 2, remplacezb=i.toString(2),l=b.length,d=l
pard=l=(b=i.toString(2)).length
.Julia, 141 octets
Ungolfed:
la source
Simplex v.0.7 , 38 octets
Simpl Ified commentaires. Entrée en binaire, aucun interprète ne fonctionne pour le moment. Espérons que les commentaires sont suffisants.
la source
Octave, 50 octets
Exemple:
la source
@(a)
définit une fonction anonyme qui prend un vecteur d' entréea
.[""
force la sortie dans une chaîne (je crois).(b=sum(a-48))
définitb
comme étant le vecteur contenant les bits.b==max(b)
sera un vecteur ayant un1
dans un endroit donné si le bitum il y a un maximum, et0
sinon.b(b>0)
est un vecteur de chaque élémentb
supérieur à0
, toutb==min(b(b>0))
comme un vecteur contenant un1
lorsque la somme de bits est le minimum, et0
sinon. Ensuite, c'est OR'd ensemble, et+48
pour ASCII.function o=b(i)
(nouvelle ligne)r=sum(i>48);o=['' (r==max(r)|r==min(r))+48];
JavaScript (ES6), 158
Une fonction avec un paramètre de tableau numérique, renvoyant un nombre. Avec le même nombre d'octets, il pourrait obtenir un paramètre de tableau de chaînes (contenant des représentations en base 2) et renvoyer une chaîne en base 2 - il suffit de déplacer le
.toString(2)
à la fin aprèsr
.la source
Haskell,
198182178161 personnageJe suis toujours débutant au golf. Seulement 80 points de réputation proviennent de la réponse.
Comment ça marche.
Au lieu de remplir, j'inverse le tableau, puis j'ajoute en utilisant user (&). Je n'utilise pas foldl1 (zipWith (+)), qui est plus court car zipWith supprimera l'élément superflous. Ensuite, je trouve le minimum et un minimum non nul, qui nécessitait également une fonction définie par l'utilisateur. Ensuite, je fais correspondre l'élément avec le maximum et un minimum différent de zéro, 1 s'il correspond, 0 s'il ne correspond pas. Ensuite, nous inversons et transformons-le en nombre binaire.
FAIRE:
Data.List
la source
k
,c
n’est utilisé qu’une fois, il n’est donc pas nécessaire de le mettre dans lawhere
clause. Utilisez directement:...||(x==a#b)...
. Pourquoi les accolades? Dansl
:concat.map show
estconcatMap show
ou mieux encore>>=
:l=(>>=show).v...
. (Remarque: il y a aussi=<<
ce qui fait la même chose, mais avec des arguments inversés:)(show=<<).v...
.>>=
et=<<
travaillez dans un contexte de liste ici et faites différentes choses dans une fonction ou dans d'autres contextes.[]
dans les derniers cas de&
et#
avec_
:b&_=b
et_#l=l
.(x==b)||(x==c)
(ou(x==b)||(x==a#b)
lorsque vous supprimezc
) peut être remplacé parelem x[b,c]
(resp:)elem x[b,a#b]
.u=maximum
etk a=m(\x->fromEnum$elem x[u a,a#u a])a
devrait fonctionner._&a=a
, ça doit rester[]&a=a
, sinon la première liste est perdue si la seconde est vide. Utilisez_
uniquement dans le dernier cas - c'est peut-être votre erreur.Python 3,
181126122 octets(J'ai éliminé la plupart des barres de décompte d'octets car cela devenait un peu ridicule.) 21 octets de moins grâce à Sp3000 !
Un peu moins joué au golf:
L'entrée est attendue en binaire avec seulement des espaces séparant les nombres. La sortie est également en binaire.
la source
Javascript,
154150 octetsMerci pour la méthode edc65 pour les calculs min / max, cela a raccourci mon code de 4 octets.
Explication
la source
f=i=>(m=0,r=[],i.map(n=>{for(k=32;k--;n=n/2|0)r[k]=~~r[k]+n%2}),r.map(n=>m+=m+(n==Math.min(...r.filter(x=>x))|n==Math.max(...r))),m)
ShapeScript , 186 octets
Un langage important et inutile pour un opérateur important et inutile.
I / O est en binaire. Le programme attend chaque numéro sur une ligne distincte, chacune se terminant par un saut de ligne.
Essayez-le en ligne!
Cas de test
la source
APL, 27 octets
C'est une fonction monadique qui prend une liste d'entiers décimaux et renvoie leur biplex décimal.
Essayez-le en ligne dans le démo ngn / apl .
Comment ça marche
la source
Wolfram Language, 113 octets
Cette version utilise les entrées d'une fenêtre contextuelle, les nombres étant entrés sous la forme "{x, y, z, ...}", (sans guillemets).
Contribution:
Sortie:
Prend une entrée dans une manipulation dynamique sous la forme d'une chaîne de la forme "{x, y, z}", avec x, y et z valant des entiers en base 10 (avec ou sans zéros non significatifs). La sortie est également en base 10.
Il existe d'autres moyens de saisir cela de manière à économiser le nombre de caractères, mais je pense que cette solution est une utilisation élégante d'une interface graphique dynamique qui effectue le calcul.
Si vous voulez l'exécuter dans le cloud, nous pouvons utiliser CloudDeploy:
Le déploiement en nuage porte le nombre de caractères à 256 mais ...
L'entrée dans FormPage est également une chaîne de la forme "{x, y, z}", x, y et z étant des entiers en base 10.
Je l'ai déployé moi-même dans le cloud et vous pouvez l'essayer à l' adresse https://www.wolframcloud.com/objects/97b512df-64f8-4cae-979b-dba6d9622781.
la source
Python 3, 197
Il faut des nombres binaires délimités par des espaces.
Version non-golfée:
la source
C #, 255
Un programme complet, entré comme argument de ligne de commande - séparé de l’espace - en décimal.
Plus lisible:
la source
Ruby, 127 octets
Prend un tableau en entrée.
la source
CoffeeScript, 194 octets
Prend les entrées sous forme de nombres binaires séparés par des virgules, les sorties en binaires.
L'essayer
la source
GolfScript, 46 octets
Essayez-le en ligne sur Web GolfScript .
Cas de test
la source
C ++, 192 octets
Accepte l'entrée d'un tableau d'entiers non signés sur 32 bits et d'un nombre d'éléments dans ce tableau.
Ungolfed:
la source