Bien sûr, le réseau SE sait très bien comment être respectueux dans les toilettes, mais pour ceux d'entre vous qui ont besoin d'une récapitulation, être respectueux signifie tirer la chasse aux toilettes, etc. d'autres que possible.
Le défi
Étant donné le plan d'un ensemble de stands avec des indications de ceux utilisés comme chaîne, vous devez retourner ou imprimer à partir d'une fonction ou d'un programme où le lieu le plus respectueux pour faire de votre entreprise est.
L'entrée
0 1 2 3 4 5 <- The stall number which is not actually visible in the input.
| | |-| |-|-| <- the stalls
Les stands sont numérotés dans l'ordre croissant de gauche à droite. Il y aura toujours au moins un stand vide. Il peut y avoir jusqu'à 50 stalles dans une entrée. Vous pouvez également prendre l'entrée comme un tableau ou une chaîne de 0
s et 1
s ou de booléens si vous préférez le faire.
Les stands en cours d'utilisation ont -
entre eux (entre les tuyaux).
Le résultat
Le décrochage le plus respectueux est celui qui est en moyenne le plus éloigné de celui utilisé. La distance entre deux stalles est la valeur absolue de la différence des nombres au-dessus d’eux.
Soyons clairs: vous trouvez la distance moyenne entre tous les stands et pas seulement les voisins.
Vous devez sortir le nombre le plus bas du décrochage le plus respectueux, vide .
Exemples
Input:
|-| |-| OR 101
Output:
1
Input:
| | |-| |-|-| OR 001011
Output:
0
Input:
|-| |-| | | | |-|-| OR 101000011
Output:
1
Input:
|-| | | | | |-|-| | | | | OR 100000110000
Output:
11
Input:
|-|-|-|-| | | | | | |-| OR 11110000001
Output:
9
Input:
|-| | OR 10
Output:
1
Input:
|-| | |-| OR 1001
Output:
1
C'est du code-golf , donc le code le plus court en octets gagne!
Vous pouvez utiliser une indexation basée sur 0 ou 1 dans votre réponse - celle que vous préférez; Si vous utilisez une indexation basée sur 1, vous devez l'indiquer explicitement dans votre réponse.
[1,0,0,1]
comme cas de test. Aucun des cas de test actuels ne vérifie si les liens sont brisés correctement.101000011
renvoie 1 (au lieu de 4 ou 5)?Réponses:
Gelée ,
10 à9 octetsUtilise l'indexation basée sur 1. Essayez-le en ligne! ou vérifier tous les cas de test .
Comment ça marche
la source
Rapide,
158, 157, 128,100 octetsPrend l'entrée de la
Array<Bool>
variablei
, retourne la réponse de la dernière expression.Modifier 1:
Enregistré un octet en convertissant en bools via une comparaison de chaîne
Edit 2:
Retravaillé mon algorithme:
Edit 3:
Profiter de la nouvelle règle qui permet de prendre directement l’entrée d’un tableau booléen.
Ungolfed:
la source
Gelée , 13 octets
1 indexé.
Essayez-le en ligne!
Algorithme
Mise en œuvre naïve de la question.
la source
Java "seulement"
270 200 196 187 196 138 138146 146 octets!sauvé
4 13innombrables octets grâce à Leaky Nun!1 octet grâce à MichealGolfedUngolfed
entrée sous forme de tableau booléen où true implique un décrochage ouvert.
la source
a
.Ruby,
797876 +n
flag = 77 octetsLa sortie est une indexation basée sur 0. L'entrée est la ligne STDIN de 0 et de 1.
la source
0...~/$/
est un bon tour. 👍🏻MATL , 14 octets
Essayez-le en ligne!
La sortie est basée sur 1.
Explication
la source
Perl 84 + 3 (
-alp
drapeaux) = 87 octetsA besoin de
-alp
drapeaux pour courir. Prend une chaîne de 1 et 0 séparés par des espaces en entrée. Par exemple :Notez que j'ai ajouté
$m=0
au début, mais ce n'est que pour le tester sur plusieurs entrées.la source
+7
:F'' alp
.-
s ne sont pas comptés.Matlab, 87 octets
Prend un tableau de uns et de zéros; utilise l'indexation basée sur 1.
Comme certaines autres réponses maximise la distance totale et non moyenne.
Probablement il y a un peu plus de golf possible ...
la source
JavaScript (ES6),
87868275 octetsPrend un tableau booléen (vrai / faux ou 1/0). Aucun point ne calcule la distance moyenne puisqu'ils utilisent tous le même facteur commun. Il suffit donc de calculer la distance totale pour chaque stand et de trouver le premier indice du plus élevé. Edit: 1 octet enregistré en utilisant à la
*
place de&&
. Vous avez enregistré 5 octets en recherchant manuellement la distance la plus élevée sur la base d'un commentaire de @Dendrobium. Sauvegardé 7 octets en réutilisantu
comme accumulateur de pseudo-réduction basé sur un commentaire de @ edc65.la source
a=>(x=0,a.map((o,i)=>x<(t=a.reduce((r,u,j)=>r+(b=i-j)*b*u*!o,0))&&(x=t,r=i)),r)
reduce
au lieu demap
- mmmms=>s.map((u,i)=>u||(s.map((w,j)=>u-=w*Math.abs(j-i)),u<x&&(x=u,r=i)),x=0)|r
1100011101
liens à2
et8
en utilisant absolu,8
en utilisant un carré), ce n'est pas important, il semble que les règles ont été clarifiées et les liens sont maintenant résolus avec le décrochage le plus à gauche ...J, 27 octets
Interprète en ligne .
la source
Ruby,
8776 octetsLança rapidement ce premier brouillon, mais entre-temps, Value Ink avait déjà posté une réponse Ruby de 80 octets ...
edit: a enlevé quelques octets avec l'aide de Value Ink:
C'est une fonction anonyme qui prend un tableau de valeurs de vérité / fausseté, comme par exemple:
la source
(r=0...a.size)
, puis sur la carte qu'au lieu d'utiliserwith_index
:r.map{|j|a[j]?(i-j).abs: 0}
. Cela devrait vous obtenir 78 octets.Mathematica, 53 octets
Utilise l'indexation basée sur 1 et utilise les entrées sous forme de liste de 0 et de 1.
la source
Javascript ES6 -
989591868488 octetsEdit: Il semble que le décrochage le plus à gauche devrait être utilisé en cas d'égalité. Les distances carrées ne fonctionnent plus, elles sont redevenues des distances absolues.
Ungolfed:
Tests effectués:
la source
Lua,
165150 ByesCela trompe un peu en utilisant le fait que généralement, lua passe une table appelée arg contenant toutes les entrées de ligne de commande.
Je suis un peu déçu d’avoir utilisé une boucle in, mais je ne pouvais pas penser à un moyen plus simple de la réussir.
Aussi, comme lua, 1 indexation basée a été utilisée.
Éditez Snipped 15 octets d'un gsub inutile.
la source
C #, 127 octets
Banc d'essai
la source