Votre mission, si vous choisissez de l'accepter, est de décider si une chaîne d'entrée donnée est lourde de points ou lourde de tirets.
Une chaîne est lourde de points lorsque sa représentation morse contient plus de points que de tirets. Par exemple, la lettre E est un seul point, ce qui signifie qu'elle est lourde de points.
Contribution
- La chaîne d'entrée ne contiendra que des caractères dans la plage de
[a-z]
ou[A-Z]
. Vous pouvez décider s'ils doivent tous être en majuscules ou en minuscules.AAA
va bien,aaa
va bien,aAa
n'est pas. - La chaîne d'entrée aura toujours au moins 1 caractère.
- Vous pouvez supposer que les chaînes d'entrée n'auront jamais autant de points et de tirets.
Production
Vous devez renvoyer Truthy pour les entrées contenant plus de points.
Vous devez renvoyer Falsy pour les entrées contenant plus de tirets.
Edit: je vais également autoriser une valeur positive pour le point et une valeur négative pour le tiret.
Cas de test
| input | morse representation | result |
|------------------------------------------------|
| S | ... | Truthy |
| k | -.- | Falsy |
| HELLO | .... . .-.. .-.. --- | Truthy |
| code | -.-. --- -.. . | Falsy |
Référence
C'est du code-golf . Le code le plus court en octets gagne.
Réponses:
APL (Dyalog Extended) ,
2415 octets SBCS-9 grâce à Ven
Fonction de préfixe tacite anonyme prenant en majuscule comme argument.
Essayez-le en ligne!
⌂morse
convertir en liste de chaînes Morse∘
puis∊
ϵ nlist (aplatir)'.-'⍧
compter le nombre de points et de tirets en>/
plus de points que de tirets? (lit. supérieur à la réduction)la source
IBM PC DOS, assemblage 8088,
5435 octets-19 octets en utilisant la méthode de différence
Non assemblé:
Explication
Implémenté dans la syntaxe Intel / MASM en tant que MACRO (essentiellement une fonction), en utilisant uniquement des instructions compatibles 8088. Entrée en chaîne majuscule (ou +2 octets pour autoriser les casse mixtes), sortie résultat Truthy / Falsy est
SF == OF
(utiliserJG
ouJL
pour tester).Les valeurs de la table des différences de lettres sont stockées sous forme de quartets binaires, donc ne prennent que 13 octets au total.
Original (54 octets):
Explication
Implémenté dans la syntaxe Intel / MASM en tant que MACRO (essentiellement une fonction), en utilisant uniquement des instructions compatibles 8088. Entrer sous forme de chaîne, sortir le résultat Truthy / Falsy dans Carry Flag. Le tableau des scores contient le nombre de tirets et de points par lettre.
L'entrée est en majuscule. Ajoutez 2 octets pour prendre des minuscules ou des majuscules.
Exemple de programme de test (en tant qu'exécutable COM autonome IBM PC DOS)
Exemple de sortie:
Télécharger le programme de test DD.COM
Ou essayez-le en ligne! Je ne connais pas de TIO en ligne pour diriger le lien vers un exécutable DOS, mais vous pouvez l'utiliser en quelques étapes:
DD Hello
ouDD code
au contenu de votre cœurla source
0000h
destinées à la source AX: fysnet.net/yourhelp.htmXLAT
faire exactement ce qu'il est censé faire. Si vous optimisiez réellement la vitesse par rapport à la taille, vous voudriez faire des recherches au format WORD. C'est toujours un gain de vitesse même sur le 8088 avec son bus externe anémique 8 bits, car vous doublez le débit sans augmenter la taille du code, sauf pour uneXCHG
instruction ou deux.XLAT
), même s'il faut 6 octets pour effectuer un décalage au niveau du bit à droite à 4 endroits (à l'intérieur de aLOOP
).Java (JDK) ,
1311241108464 octetsFait intéressant, «point» est lourd de tirets et «tiret» est lourd de points.
Prend l'entrée dans toutes les majuscules en tant que
IntStream
(faites défiler vers le bas pour une version avec un réelString
pour 8 octets supplémentaires). J'ai eu beaucoup d'aide pour jouer à celui-ci: Merci à Expired Data pour avoir joué 20 octets, à Neil pour avoir joué 26 octets, à Olivier Grégoire pour avoir joué 18 octets et à Kevin Cruijssen pour avoir joué 2 octets.Contient 26 caractères non imprimables à l'intérieur des guillemets doubles.
Essayez-le en ligne!
Non golfé:
Java (JDK) ,
1311241108472 octetsPour les puristes; prend l'entrée comme un
String
. Merci à Expired Data pour avoir joué au golf 20 octets, à Neil pour avoir joué au golf 26 octets et à Olivier Grégoire pour avoir joué au golf 10 octets.Essayez-le en ligne.
Non golfé:
la source
"35344527512513031462452313".charAt(a-65)-51
?Gelée , 21 octets
Essayez-le en ligne!
Comment?
la source
05AB1E ,
2221 octetsUn octet enregistré grâce à Kevin Cruijssen
Essayez-le en ligne!
Explication
est 35344527512513031462452313 compressé à la base 255.
la source
S
.usdgpsahsoaboutlopezgbidol
v = ord(c)*3%83%8
aboutlopez
. J'ai ensuite cherché d'autres matchs avec le même multiplicateur et le même modulo. (Il n'est donc absolument pas garanti d'être optimal.)C # (Visual C # Interactive Compiler) , 47 octets
Utilise la «chaîne magique» de Level River St. Assurez-vous également de voter pour leur solution!
Ce n'est pas tous les jours que C # bat Ruby, Python, Javascript, C, Retina et Perl!
Essayez-le en ligne!
la source
Gelée , 23 octets
Essayez-le en ligne!
la source
C (gcc) ,
8482817975 octetsSuppose toutes les majuscules.
Essayez-le en ligne!
la source
Python 2 ,
737069 octetsEssayez-le en ligne!
Majuscules uniquement
-3 octets, grâce à Erik l'Outgolfer
Version majuscule et minuscule:
Python 2 ,
7371 octetsEssayez-le en ligne!
la source
JavaScript (Node.js) ,
6968 octetsAttend la chaîne d'entrée en majuscules. Retour0 ou 1 .
Essayez-le en ligne!
la source
Stax , 20 octets
Exécuter et déboguer
Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
Ruby , 64 octets
Essayez-le en ligne!
Utilise une chaîne magique de 13 octets, 2 nombres
0..7
codés dans chaque octet. Soustrayez 3 pour une plage-3..4
.Le code ASCII pour
A
(et aussiN
) pris modulo 13 est par coïncidence, zéro.la source
Retina 0.8.2 , 51 octets
Essayez-le en ligne! Le lien inclut des cas de test. Accepte uniquement les majuscules (+6 octets pour les majuscules). Voler sans vergogne la chaîne de @ Arnauld mais j'allais quand même utiliser le même algorithme. Explication:
Remplacez chaque lettre par la différence du nombre de points et de tirets, plus trois, ainsi
O=0
etH=7
.Représentez la différence comme ce nombre de
<
s et de trois>
s. (Malheureusement, je ne peux pas utiliser de points car ils sont spéciaux dans l'expression régulière.)Retirez les paires de
<
s et>
s correspondantes.Vérifiez s'il reste encore des points.
la source
Bash + coreutils,
6460 octetsEssayez-le en ligne!
Prend une chaîne en minuscules, renvoie zéro pour la fausse, non nul pour la vérité
Explication
Utilise tr et sed pour créer un programme dc qui ressemble à (pour l'exemple d'entrée «bonjour»):
la source
<space>3
parz
(commodément, j'ai 3 éléments sur la pile à ce stade!) Et un autre octet en remplaçant les guillemets autour de mon programme sed par une seule barre oblique inverse pour échapper au&
R ,
7470 octetsl'entrée doit être en minuscules, renvoie VRAI ou FAUX
Essayez-le en ligne
la source
TI-BASIC (TI-84), 111 octets
J'ai utilisé la même chaîne pour déterminer la lourdeur des points que certaines des autres réponses.
Le programme retourne truey (
1
) si la chaîne d'entrée est lourde de points, falsy (0
) sinon.La chaîne d'entrée doit être en majuscules.
L'entrée est stockée dans
Ans
. La sortie est stockéeAns
et imprimée automatiquement à la fin du programme.Non golfé:
Exemple:
Explication:
(TI-BASIC n'a pas de commentaires, supposez que cela
;
indique un commentaire)Remarque: Le nombre d'octets d'un programme est évalué à l'aide de la valeur dans [MEM] > [2] > [7] (124 octets) puis en soustrayant la longueur du nom du programme,
CDGF3
(5 octets) et 8 octets supplémentaires utilisés pour stockage du programme:124 - 5 - 8 = 111 octets
la source
Perl 5
-pF
, 53 octetsEssayez-le en ligne!
la source
Facteur , 66 octets
Essayez-le en ligne!
la source
C ++ (compilé avec Visual Studio 2017) 171 octets
si nous prenons également en compte le programme principal qui existe à des fins de test.
c'est la variante "bien rangée" non golfée
suppose tout en minuscules
la source
22
devrait l'être2
.)"132...
et"112...
devient"353...
et51
est la valeur ASCII de3
c (118 caractères) renvoie une valeur positive pour over-dot-ness et une valeur négative pour over-dash-ness
non golfé
la source
1& ( v > (c[I] - 65))
, qui est la même quev > c[I] - 65
, que je ne peux pas imaginer est jamais fausse, donc nous pourrions supprimer tout cela en riffant sur @ceilingcat pendant 56 octetsMathGolf , 22 octets
Essayez-le en ligne!
Utilise la même méthode que de nombreuses autres réponses, où
ⁿ∩┐↑rⁿ¼~<↔"
représente le nombre magique35344527512513031462452313
.la source
Python 2,
9086 octetstravaillé sur mon local avec la bibliothèque morse . -4 octets. Merci pour l'astuce @JoKing!
De plus, c'est 1 octet de plus s'il est en Python 3.
Python 3, 87 octets
Bien que la question suppose que le nombre de ". Et" - ne sera pas égal; s'ils sont égaux, ce code renverra True.
la source
input
au lieu deraw_input
si vous voulez ...input
evals STDIN avant de la passer au programme