Objectif
Écrivez un programme ou une fonction (ou équivalent) qui trie et renvoie la lettre impaire dans la matrice de taille aléatoire.
Détails
Vous recevrez une matrice (sous forme de chaîne) en entrée de dimensions aléatoires comme celle-ci.
bbbbbbbbbb bbbbbdbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb
Votre travail consiste à trouver la lettre qui ne correspond pas au reste (dans ce cas, elle se d
trouve à la ligne 2, col 6) et à renvoyer cette lettre en sortie. La matrice sera composée de lettres A-Z
, de a-z
nouvelles lignes ( \n
, uniquement aux extrémités des lignes) et aura des dimensions allant de 5x5 à 10x10 (25-100 lettres).
Des échappatoires standard s'appliquent. Il s'agit d'un défi de golf de code; entrée avec le code du moins d'octets gagne.
Contribution
L'entrée sera transmise via l'entrée standard sous forme de chaîne s'il s'agit d'un programme ou d'argument s'il s'agit d'une fonction (ou similaire).
Production
Un seul caractère qui est le « bizarre » dans la matrice ou None
, nil
, NUL
ou la chaîne "None"
s'il n'y a pas de caractère « étrange ».
Plus d'exemples
AAAAAAA AAAAAAA AAAAAAA AAAIAAA AAAAAAA
Réponse: I
vvqvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv
Réponse: q
puuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu
Réponse: p
Générateur
Voici un générateur de matrice aléatoire écrit en Python que vous pouvez utiliser pour tester votre programme. Remarque: Il y a une légère chance qu'il puisse faire une erreur et ne pas mettre une lettre bizarre.
Réponses:
Python 3 , 27 octets
Essayez-le en ligne!
la source
J ,
12 107 octetsEssayez-le en ligne!
Version 10 octets
siffle ...
la source
Brachylog ,
84 octetsEssayez-le en ligne!
Explication
Je n'ai jamais utilisé Brachylog auparavant, donc ce n'est peut-être pas optimal.
la source
∋≠
afterḅ
pour obtenir les résultats de la longueur 1 est très intelligente. Vous devriez certainement le poster dans la question des conseils Brachylog .K (oK) ,
76 octetsSolution
Essayez-le en ligne!
Exemple:
Explication:
Trouvé une approche légèrement plus courte: Évalué de droite à gauche:
Remarques:
Alors que je m'attends à ce que l'aspect bonus de ce défi soit abandonné, cette solution retournera le caractère de nouvelle ligne
\n
s'il n'y a pas de caractère impair:la source
Prolog (SWI) , 46 octets
Essayez-le en ligne!
Ou si la sortie vraie standard des requêtes prolog n'est pas correcte:
Prolog (SWI) , 48 octets
Essayez-le en ligne!
Explication
la source
C (gcc) ,
9392906662 octetsBeaucoup plus court en fonction
Essayez-le en ligne!
code de test
l'ancienne version est un programme
C 86 octets
Sort le caractère impair, ou rien. courir comme ça;
la source
gets()
dans le pilote de test car il nettoie l'entrée en supprimant les caractères \ n pour vous. Cela fait un certain travail pour que votre fonction ne fonctionne pas sur l'entrée d'origine.05AB1E ,
42 octetsEnregistré 2 octets grâce à Adnan
Essayez-le en ligne!
Explication
la source
2x2
matrices. J'ai raté la partie sur5x5
et en haut. Merci!nil
s'il n'y en a pas de "bizarre", n'est-ce pas?Rétine , 13 octets
Essayez-le en ligne!
Explication
Triez tous les caractères.
Supprimez tous les caractères qui apparaissent au moins deux fois.
la source
Husk , 2 octets
Essayez-le en ligne!
Il s'agit d'une fonction prenant une chaîne en entrée et renvoyant un caractère. Il prend le minimum de la chaîne d'entrée lors de la comparaison des caractères pour l'égalité (c'est-à-dire qu'il renvoie le caractère qui est égal au moins grand nombre d'autres caractères).
la source
C, 94 octets
Retour par pointeur. Si aucun, revenez
\0
.Cela entraînera des fuites de mémoire. En supposant que
int
c'est 4 octets.Essayez-le en ligne!
la source
t
soit mis à zéro avant d'appeler à chaque fois, pas la première fois.Mathematica, 27 octets
Essayez-le en ligne!
-1 octet de Martin Ender
la source
Bash ,
1520 octetsEssayez-le en ligne!
Explication:
fold
s l'entrée du1
caractère par ligne,sort
s en groupes de lettres correspondantes, puis imprime uniquement les lignes qui sontuniq
ue.Merci à @Nahuel Fouilleul d' avoir attrapé et aidé à résoudre un problème avec cette approche.
la source
|sort|
mais il peut y avoir une meilleure solutiongrep -oP '^(.)((?=(?!\1).){2}|.*\K(?!\1).)'
sort
correctif, merci. Vous pouvez toujours publier cette réponse grep comme la vôtre si vous le souhaitez.Pyth , 4 octets
Essayez-le ici!
la source
.m/Q
est également de 4 octetsPerl 5, 17 + 3 (-00p) -25% = 15 octets
essayez-le en ligne
la source
Matlab, 25 octets
L'entrée "a" où "a" n'est pas le mode de "a". Produit un tableau vide pour aucune excuse.
la source
Haskell, 33 * 0,75 = 24,75 octets
Renvoie une liste vide s'il n'y a pas de caractère impair.
Essayez-le en ligne!
Pour chaque caractère
c
de la matrice (donné sous forme de chaînes
), créez une chaîne de tous les caractèress
égaux àc
et conservez ceux de longueur 1.la source
JavaScript (ES6), 37 octets
Renvoie
null
s'il n'y a pas de lettre impaire.Cas de test
Afficher l'extrait de code
la source
Japt , 6 octets
Prend l'entrée sous la forme d'une chaîne multi-lignes et génère une chaîne de caractères unique ou une chaîne vide s'il n'y a pas de solution.
Essayez-le
Explication
Supprimez les caractères qui retournent truey (
k
) lorsqu'ils sont passés par une fonction (@
) qui compte (è
) les occurrences de l'élément courant (X
) dans l'entrée et soustrait 1 (É
).la source
Lisp commun, 47 octets
Essayez-le en ligne!
Renvoie la lettre impaire ou NIL si elle n'existe pas.
la source
Gelée , 4 octets
Essayez-le en ligne!
Retour
\n
(une seule nouvelle ligne) au cas où il n'y aurait pas de caractère impair. Ce\n
n'est évidemment pas un caractère imprimable.Par coïncidence, c'est exactement le même algorithme que la réponse Mr.Xcoder Python. (Je l'ai trouvé indépendamment)
Explication:
Cela fonctionne parce que dans une
m×n
matrice:m-1
sauts de ligne, 1 caractère impair etm×n-1
un caractère normal, et1 < m-1 < m×n-1
parce que5 ≤ m, n ≤ 10
.m-1
sauts de ligne etm×n
un caractère normal, etm-1 < m×n
.la source
C # (.NET Core) , 54 octets
Essayez-le en ligne!
la source
using
instruction dans le nombre d'octets.C (gcc) ,
9186827971 octetsEssayez-le en ligne!
Explication:
Comparez les caractères actuels et précédents tout en sautant les nouvelles lignes. Si différent, comparez au caractère suivant. Cela nous indique si nous renvoyons le caractère actuel ou précédent. La fonction renvoie la valeur de caractère "impair" si elle existe ou 0 si le tableau n'est pas impair. Nous nous en sortons avec le "prochain" chèque car il y a toujours une nouvelle ligne avant le caractère
\0
. S'il n'y a pas de caractère impair, nous renvoyons intrinsèquement le \ 0 de la boucle for.Code xor plus ancien et plus sexy Explication:
Créez un masque xor en cours d'exécution des 3 valeurs de chaîne suivantes. S'ils sont tous identiques, la valeur sera égale à l'un des trois. S'ils sont différents, alors les 2 identiques s'annuleront en laissant l'unique.
Doit factoriser / n avant le xor ou il devient désordonné. Vous devez également vérifier l'inégalité de 2 caractères dans le cas où s [0] est la valeur impaire. Cela coûte plus cher || vérifier.
la source
v;f(char*s){while(s[3]){s[2]==10?s+=3:0;v=*s^s[1]^s[2];if(v^*s++||v^*s)break;}}
v;f(char*s){while(s[2]==10?s+=3:0,v=*s^s[1]^s[2],s[3])if(v^*s++||v^*s)break;}
Cependant, votre cheval gagnant est l'autre, si vous env;f(char*s){for(v=-1;*++s==10?s+=2,v--:0,*s;v=0)if(*s^s[-1])return s[v];}
s+=*++s-10?0:2
place de*++s==10?s+=2:0
Octave ,
2625 octets1 octet enregistré grâce à @Giuseppe
Fonction anonyme qui prend un tableau de caractères 2D en entrée et génère la lettre impaire ou une chaîne vide si elle n'existe pas.
Essayez-le en ligne!
la source
Alice , 16 * 75% = 12 octets
Essayez-le en ligne!
Sort
Jabberwocky
s'il n'y a pas de caractère en double.Explication
Il s'agit d'un cadre pour les programmes linéaires qui fonctionnent entièrement en ordinal (mode de traitement de chaîne). Le code réel est exécuté en zigzag et se déroule pour:
Au lieu de
&-
, nous pourrions également utiliserey
(translittération dans une chaîne vide). Alternativement, en dépensant un caractère de plus pour la manipulation de la pile, nous pourrions également dédupliquer l'entrée qui nous permet de supprimer les caractères indésirables avecN
, mais c'est toujours le même nombre d'octets:Alice , 13 octets
Essayez-le en ligne!
Ceci est la solution sans bonus, il manque simplement le
.n*
.la source
Rétine , 22 octets
Essayez-le en ligne! Nécessite seulement une hauteur et une largeur d'au moins 3, au lieu de 5.
la source
APL + WIN, 16 octets
Invite à saisir l'écran et génère une lettre impaire ou rien s'il n'y a pas de lettre impaire
la source
a/⍨1=+/a∘.=a←,⎕
pour un octetPowerShell , 39 octets
Essayez-le en ligne!
Prend l'entrée sous forme de chaîne avec des retours à la ligne (comme spécifié dans le défi), la convertit en un
char
tableau. Nous avons ensuiteGroup-Object
les personnages, afin que les personnages soient regroupés par leurs noms, puis ensort
fonction duc
nombre. Cela garantit que le caractère solitaire est le premier, nous prenons donc l'[0]
index et le sortons.Name
.Si la nouvelle ligne est acceptable pour «rien», cela donne droit au bonus.
la source
sort c*)[0]
pourrait être raccourci, mais ce que je suis venu avec était le même nombre d'octets,? c* -eq 1)
.$args
. Il est également plus précis à faire([char[]]$args|group|? c* -eq 1).Name
car il retournera avec précisionnull
lorsqu'il n'y a pas de caractère impair (au lieu d'une nouvelle ligne). Cependant, en termes d'octets, cela ne vous ramènera toujours pas en dessous de 37.None
,nil
,NUL
ou la chaîne de"None"
caractère s'il n'y a pas de « bizarre ».) , Il devrait encore être modifié. Newline ne fait pas partie des réponses acceptables.Perl 6 ,
2724-25% = 18 octetsEssaye-le
Essaye-le
Cela renverra une valeur indéfinie quand une entrée ne contient pas de caractère impair.
Étendu:
la source
Brainfuck, 125 octets
Essayez-le en ligne
Imprime la lettre de la matrice s'il n'y en a pas de bizarre
la source
Java 8, 85 octets
Il s'agit d'un lambda de
String
àString
(par exempleFunction<String, String>
). C'est essentiellement une copie de la solution de Luca , mais j'ai un peu réduit le tri des chaînes.Essayez-le en ligne
la source