La tâche
Dans ce défi, votre tâche consiste à écrire un programme ou une fonction qui prend une chaîne et génère une valeur de vérité ou de falsey selon que le premier caractère et le dernier caractère de la chaîne d'entrée sont égaux.
Contribution
Vous pouvez prendre des entrées de toute manière raisonnable. Cependant, en supposant que l'entrée soit présente dans une variable prédéfinie, elle n'est pas autorisée. La lecture depuis un fichier, une console, une ligne de commande, un champ de saisie, etc., ou de prendre une entrée comme argument de fonction est autorisée.
Sortie
Vous pouvez sortir dans n'importe quel format raisonnable, sauf pour affecter le résultat à une variable. L'écriture dans un fichier, une console, une ligne de commande, une boîte modale, des return
instructions de fonction , etc. est autorisée.
Règles additionnelles
L'entrée peut également être une chaîne vide, pour laquelle vous devez renvoyer une valeur falsey.
Les chaînes d'entrée à caractère unique devraient avoir un résultat de vérité.
Votre programme devrait être sensible à la casse.
helloH
devrait produire une valeur de falsey.Vous ne pouvez avoir qu'une seule valeur Truthy et une seule valeur Falsey. Par exemple, la sortie
false
pour une chaîne d'entrée et0
pour une autre chaîne d'entrée en tant que valeurs Falsey n'est pas autorisée.Les failles standard ne sont pas autorisées.
Cas de test
Input -> Output
"10h01" Truthy
"Nothing" Falsey
"Acccca" Falsey
"wow!" Falsey
"wow" Truthy
"H" Truthy
"" Falsey
C'est du code-golf , donc le code le plus court en octets gagne!
.
, mais cela ne correspond pas aux sauts de ligne. En général, si vous utilisez la balise string , spécifiez exactement quels caractères peuvent apparaître dans l'entrée.AbAb => false
Réponses:
Gelée , 3 octets
Essayez-le en ligne!
la source
Python 3 , 23 octets
La sortie se fait par le code de sortie, donc 0 (succès) est la vérité et 1 (échec) est faux. Si cela est acceptable, un octet peut être sauvegardé.
Essayez-le en ligne!
Comment ça marche
Tout d'abord, si s est une chaîne vide,
s[0]
une erreur IndexError sera déclenchée , ce qui entraînera l'échec du programme.Pour les non-vides s , si les premiers et derniers caractères sont égaux,
s[0]!=s[-1]
évaluera à faux , de sorte que les sorties du programme proprement et immédiatement.Enfin, si les caractères sont différents,
s[0]!=s[-1]
sera évalué à True , ce qui entraînera l'exécutions[-1]<e
de compairson . Puisque e n'est pas défini, cela génère une erreur NameError .Si la compatibilité avec Python 2 n'est pas souhaitée,
fonctionne également, car comparer une chaîne avec un entier déclenche une erreur TypeError .
la source
JavaScript, 19 octets
la source
endsWith
méthode d'objet String. Agréable! :)endsWith()
?! J'attendais l'occasion de l'utiliser.Mathematica, 15 octets
Prend un tableau de caractères. Lance des erreurs lorsque l'entrée est vide mais peut être ignorée.
la source
===
s'occupe de l'affaire vide :)05AB1E , 4 octets
Essayez-le en ligne! ou essayer tous les tests
la source
ÂâćüQ
être plus déroutant et gagner un octet!ćsθQ
est un autre 4-byter.Retina ,
13 à12 octetsEssayez-le en ligne! Comprend une suite de tests. Edit: 1 octet enregistré grâce à @Kobi.
la source
C ++, 39 octets
Programmes complets:
Essayez-le en ligne
la source
s[0]
pour*s
sauver deux octets chacun?Brachylog , 4 octets
Essayez-le en ligne!
Explication
la source
Java,
8177 octetsEssayez en ligne
true
si elles sont égales, sinonfalse
,false
pour une chaîne videVersion tableau, 60 octets
la source
Charcter.MAX_VALUE - Character.MIN_VALUE
, soit 65535s.charAt(l-1)==s.charAt(0)
économiser deux octets.Python 2 ,
262524 octetsMerci à Dennis avoir sauvegardé un octet!
Essayez-le en ligne!
la source
brainfuck , 43 octets
Essayez-le en ligne!
Explication
La boucle principale est
[>[->+<<->],]
. Après chaque itération, la cellule à droite de la position actuelle est le premier octet de la chaîne et la cellule à gauche est la différence entre le dernier caractère traité et le premier.<[[-]-<]
convertit le résultat final en -1 s'il est différent de zéro et le reste convertit respectivement -1 et 0 en 48 et 49 ("0" et "1").la source
Haskell , 21 octets
c
prend unString
et retourne unBool
.Essayez-le en ligne!
c s=s!!0==last s
.take 1s
donne une liste qui n'est que le premier élément des
lesss
est vide, auquel cas il est également vide.last s
erreur sur une chaîne vide, mais la paresse de Haskell l'enregistre: Une chaîne avec un seul élément est toujours différente de la chaîne vide, sans évaluer son élément.la source
MATL, 5 octets
Essayez-le sur MATL Online!
Explication
Dans le cas où une chaîne d'entrée vide doit être traitée, alors quelque chose comme ce qui suit (8 octets) fonctionnerait
Cette solution ajoute simplement a
0
devant la matrice N x N, de sorte que pour une entrée vide, lorsque la matrice est présente0 x 0
, il reste une0
valeur qui est ensuite saisie par0)
Essayez-le sur MATL Online
la source
5L)d~
.tn?&=PO)}F
pour gérer les entrées vides; vous ne savez pas s'il existe un moyen plus efficace)Japt , 6 octets
Essayez-le en ligne!
la source
false
). Je pense que vous pouvez résoudre ce problème avectJ ¥Ug
APL (Dyalog) , 4 octets
Essayez-le en ligne!
Explication
Voici la raison pour laquelle cela fonctionne sur les chaînes vides. L'application
⊃
à une chaîne vide renvoie un espace. Mais inverser une chaîne vide renvoie toujours une chaîne vide. Par conséquent, comparer une chaîne vide avec une chaîne non vide (dans ce cas
) donne un vecteur numérique vide. Et s’appliquant
⊃
à un vecteur vide numérique renvoie0
. Par conséquent, passer une chaîne vide revient0
.la source
(⊃⌽)=⊃
ou⊢/=⊃
, mais aucun de ceux-ci ne donne le bon résultat. Au lieu de cela,⌽=⊃
compare la chaîne inversée à son premier caractère, puis sélectionne le premier élément de celui-ci. Si la chaîne est vide, elle finit par comparer un espace à une chaîne vide, ce qui donne une liste booléenne vide, dont le premier élément (forcé)⊃
est0
- la réponse correcte pour les chaînes vides. Votre expression est équivalente à⊃⊃=⌽
parce que=
commutative.⊃⌽=⊃
n'est pas la même chose que(⊃⌽)=⊃
. Il est plus coûteux, car il compare tous les éléments au lieu du premier et du dernier. En outre, cela ne fonctionnerait pas si le PO utilisait des nombres au lieu de chaînes.The first argument reversed
→The right argument reversed
Java,
5243 octetsPour que cela fonctionne, introduisez-le dans une fonction telle que la suivante qui crée un lambda "actif":
la source
s.endsWith(""+s.charAt(0))
lieu des.charAt(0)==s.charAt(s.length()-1)
s->""!=s&&s.endsWith(""+s.charAt(0))
new String()
le lambda. Il va lancer une exception. La sémantique de référence ne fonctionne pas ici.Ruby,
26 à24 octetsEnregistré deux octets grâce à @philomory !
Premier post sur codegolf -))
la source
e[0]&&e[0]==e[-1]
, car sie
est vide,e[0]
il sera nul. En fait, à bien y penser, cenil
n’est pas bon car c’est Falsey mais ce n’est pas le même Falsey que la comparaison revient; encore, après avoir ajouté,!!
vous enregistrez encore 2 caractères.PHP> = 7.1, 23 octets
affiche 1 pour égal et rien si le personnage est différent
la source
Rapide, 57 octets
la source
a.last
nécessaire?C #,
3830 octetsSauvegardé 8 octets grâce à @raznagul.
la source
s
simplement comparer avec""
. De plus, vous n'avez pas besoin de l'?:
opérateur. L'utilisation&&
a le même résultat.&
le même effet aussi?&
ça ne marche pas. Avec&&
la deuxième expression n'est pas validée si la première expression est fausse. Avec&
les secondes, l'expression est toujours validée et échoue avec unIndexOutOfRangeException
scénario de test de chaîne vide.s.Last()
au lieu des[s.Length-1]
R, 40 octets
Merci à Nitrodon pour -2 octets.
Merci à MickyT pour -8 octets.
Tester:
Sortie:
la source
rev(y<-el(strsplit(x,"")))==y
.f=
function(x)x>""&&rev(y<-charToRaw(x))==y
> <> ,
3933 octetsC'est la première fois que j'utilise> <> et que je joue au golf, donc des suggestions utiles seraient les bienvenues.
Le code est en trois sections de base.
la source
Feuilles Google, 33 octets
Prend l’entrée de la cellule
[A1]
et les sorties1
pour l’entrée vérité et l’0
entrée falsey.Il est à noter que les parenthèses dans
Exact(
etRight(
sont laissées non fermées car Google Sheets corrige cela automatiquement dès que l'utilisateur a saisi le texte de la formule et appuyé sur Entrée pour quitter cette cellule.Sortie
la source
&
comme ça. En outre, il considèreA=a
être vrai. Le plus court que je puisse obtenir est de 38 octets:=AND(EXACT(LEFT(A1),RIGHT(A1)),A1<>"")
ou l’alternative=IFERROR(CODE(A1)=CODE(RIGHT(A1)),1=0)
.TRUE
pour toute entrée sans erreur. ( capture d'écran ) Cela fonctionne-t-il dans votre copie pour tous les cas de test? ExcelGuy a une réponse qui se termine comme la mienne ci-dessus pour les mêmes raisons.*
plutôt&
le binaire et l'instruction, mais cela laisse tout de même le"A"="a"
problème, que j'avais complètement oublié. Tout cela et un peu de corrections de syntaxe me conduisent à=EXACT(LEFT(A1),RIGHT(A1))*(A1<>"")
35, mais j'ai changé le langage pour Google Sheets, ce qui m'a permis de laisser tomber le terminal entre parenthèses dans laExact
déclaration, rendant=(A1<>"")*Exact(Left(A1),Right(A1
pour 33 octetsR,
5043414064Deuxième solution avec 41 octets pour une fonction appelable - grâce à @ niczky12 & @Giuseppe - modifiée pour x = ""
D'abord avec 50 octets mais pas pour le challenge
la source
charToRaw
parutf8ToInt
pour produireNA
s lorsque la chaîne est vide.{}
entourant le corps de la fonction.(y==rev(y))[1]
c'est plus court d'un octetNA
une chaîne vide maisFALSE
pour"ab"
. Essayez-le en ligne! .Octave, 16 octets
Il faut une chaîne
s
en entrée et compare le premiers(1)
élément avec le derniers(end)
.Cela pourrait être
@(s)s(1)-s(end)
si elle était OK pour échangertrue/false
àfalse/true
.la source
GNU grep , 12 octets
Exécuter en mode étendu ou PCRE.
Je ne sais pas si c'est considéré comme de la triche ou non.
la source
JavaScript, 20 octets
Ajouter
f=
au début et invoquer commef(arg)
.Explication
Cette fonction prend en argument
_
. Dans le corps de la fonction,_[0]==_.slice(-1)
vérifie si le premier élément de_
(at0
th index) est égal au dernier élément de celui-ci et renvoie le type appropriétrue
oufalse
booléen.la source
SILOS , 81 octets
Essayez-le en ligne!
la source
Common Lisp,
83746158 octetsOriginal: 83 octets
Je viens tout juste d’apprendre l’apprentissage de Common Lisp, j’ai donc l’impression d’apporter un putter à un driving range. Il doit y avoir une sorte de macro de magie récursive ou de manipulation de tableau possible que je ne vois pas.
C'est une fonction anonyme qui accepte une chaîne en tant qu'entrée:
Prettifié:
J'aimerais voir une solution plus lisse!
Révision 1: 74 octets
Je dois aimer ces fonctions de la bibliothèque standard!
Laid:
Joli:
Révision 1.5: 61 octets
Les espaces blancs!
Révision 2: 58 octets
Laid:
Joli:
C'est tout pour le moment! Je pense que je suis déjà plus intelligent.
la source
if
lieu deand
et au(mismatch(reverse s)s)
lieu de(mismatch s(reverse s))
AWK,
29 à34 octetsCelui-ci pourrait tricher légèrement, car il nécessite d'appeler AWK avec l'option:
Dans GNU Awk, vous pouvez utiliser les synonymes de forme longue:
J'ai donc ajouté 5 octets au total pour tenir compte de cela.
Laid:
Joli:
la source