Étant donné une chaîne d'entrée contenant uniquement les caractères A-Z
, a-z
et les espaces, supprimez toutes les occurrences des versions majuscules et minuscules du premier caractère de la chaîne (si le premier caractère est A
supprimé, tous les A
s et a
s, si le premier caractère est (espace), supprimez tous les espaces) et imprimez la sortie.
Exemples de cas:
Testing Testing One Two Three
->esing esing One wo hree
Programming Puzzles and Code Golf
->rogramming uzzles and Code Golf
How much wood would a woodchuck chuck if a woodchuck could chuck wood
->ow muc wood would a woodcuck cuck if a woodcuck could cuck wood
{space}hello world
->helloworld
welcome to WATER WORLD
->elcome to ATER ORLD
C'est le code-golf , le code le plus court en octets gagne!
Remarques:
- L'entrée sera toujours composée d'au moins 2 caractères valides.
- La sortie ne sera jamais une chaîne vide.
Réponses:
Pyth, 7 octets
Essayez-le en ligne: démonstration ou suite de tests
Agréable. Le nouvel opérateur bifurqué (âgé de seulement 8 jours) aide ici à enregistrer un caractère. Je pense que c'est le premier code qui utilise cette fonctionnalité.
Explication
la source
brainfuck, 219 octets
(Nécessite une bande qui permet au pointeur d'aller aux négatifs ou aux boucles jusqu'à la fin s'il essaie. Nécessite également
,
de retourner 0 à EOF. D'après mon expérience, la plupart des interprètes répondent à ces exigences par défaut.)En fait, cela s'est avéré assez facile! Je ne serais pas surpris s'il est jouable au golf (j'ai une idée de l'endroit où il pourrait y avoir des octets gaspillés, mais je ne suis pas très sûr si cela se déroulera). Pourtant, le faire fonctionner n'était pas vraiment un défi du tout.
Ce code traite tout avec une valeur ASCII inférieure à 97 en tant que caractère majuscule. Si le premier caractère est un espace, il essaiera de supprimer toutes les occurrences d'un "espace en minuscules" (ie
chr(32+32)
, ie@
) de la chaîne. C'est bien, car seules les lettres et les espaces seront toujours présents.Avec commentaires:
la source
Perl, 13 octets
En comptant le shebang comme un, l'entrée provient de stdin.
Exemple d'utilisation
la source
substr
mais bien sûr, vous avez trouvé une bien meilleure façon!perl -p script.pl
. Les options de ligne de commande sont généralement comptées comme un octet chacune, au moins sur ce site.CJam, 8 octets
Essayez-le en ligne dans l' interpréteur CJam .
Comment ça marche
la source
~
cependant.)Pyth, 8 octets
Essayez-le en ligne
Utilise la version Pyth de python
str.title
pour convertir une chaîne de la première lettre deux fois dans le formulaire"<Upper><Lower>"
. Ensuite, il supprime chaque élément de l'entrée qui se trouve dans cette chaîne. Les espaces fonctionnent bien car ils ne sont pas affectés parstr.title
.la source
MATLAB, 28 octets
la source
JavaScript (ES6),
3836 octetsCela ne dépend pas du
flags
paramètre spécifique à Mozilla.CoffeeScript,
3937 octetsPour une fois, il est plus court en JS que CoffeeScript!
la source
new
c'est facultatif, doncRegExp(x[0],'gi')
plus court.PHP, 41 octets
Prend un argument de ligne de commande . Les balises ouvertes courtes doivent être activées pour PHP <5.4.
la source
$argv[1]
:<?=str_ireplace(($a=$argv[1])[0],'',$a);
Perl, 27 octets
Il s'agit d'un programme complet, bien qu'il soit simplement basé sur 2 expressions régulières qui pourraient probablement être copiées dans un programme Retina pour économiser des octets sur les E / S.
Edit: On dirait que cela a déjà été battu avec quelqu'un utilisant l'
-p
option. Oh, et en utilisant$&
au lieu de$1
.la source
#!perl -p
est toujours deux octets plus court que$_=<>;print
.-p
option. Il n'y a pas vraiment de modifications que je puisse apporter à ma réponse sans la rendre identique à la vôtre.Minkolang 0.9 ,
2333 octetsPas question que ça gagne mais hein, c'est amusant!
Essayez-le ici.
Explication
(Cela peut échouer dans certains cas marginaux, comme si le premier caractère est un symbole.)
la source
TECO ,
1514 octetsModification du texte? En cas de doute, utilisez l'éditeur de texte et le correcteur!
Après beaucoup d'essais et d'erreurs (principalement des erreurs), je pense que c'est le programme TECO générique le plus court qui fera le travail.
Ou, sous une forme lisible par l'homme
$
représente la touche d'échappement et^E
représente la séquenceCTRL
+E
. Selon la saveur de TECO que vous utilisez, il peut reconnaître ces substitutions ASCII, ou non.Selon le manuel, certains dialectes de TECO acceptent cette version à 13 octets (en utilisant une commande find-and-delete au lieu de commandes "find" et "delete" séparées) à la place:
la source
Pip, 8 octets
Prend la chaîne comme argument de ligne de commande (devra être citée si elle contient des espaces). Explication:
Cette solution a l'avantage supplémentaire de travailler sur des chaînes contenant des caractères ASCII imprimables. (L'
X
opérateur barre oblique inverse tout ce qui n'est pas alphanumérique.)la source
Python, 66 caractères
la source
Julia, 34 octets
Cela crée une fonction sans nom qui accepte une chaîne et renvoie une chaîne. Il construit une expression régulière insensible à la casse à partir du premier caractère de l'entrée et remplace toutes les occurrences de celle-ci par une chaîne vide.
la source
Mathematica, 47 octets
la source
R, 43 octets
Il s'agit d'un programme complet qui lit une ligne depuis STDIN et écrit le résultat modifié dans STDOUT.
Non golfé:
la source
Rubis, 25 octets
Fonction anonyme:
Programme complet, 29 octets:
la source
Python, 61 octets (beaucoup trop)
J'imagine qu'il existe une meilleure façon de procéder, mais je n'arrive pas à la trouver. Des idées sur la suppression du
"".join(...)
?la source
x[0]+x[0].swapcase()
.(x[0]*2).title()
.lambda x:x.replace(x[0].upper(),'').replace(x[0].lower(),'')
- 60 octetsOuroboros , 61 octets
Hé, c'est plus court que C ++! Ha.
À Ouroboros, chaque ligne du programme représente un serpent avec sa queue dans sa bouche. Le contrôle du flux est accompli en mangeant ou en régurgitant des sections de queue, avec une pile partagée pour synchroniser entre les serpents.
Serpent 1
i.
lit un caractère de l'entrée et le duplique..91<\64>*32*
pousse32
si le caractère était une lettre majuscule,0
sinon.+
en convertissant les lettres majuscules en minuscules tout en laissant les lettres minuscules et les espaces inchangés. Tout cela a eu lieu sur la pile de serpent 1, donc nous poussons maintenant la valeur vers la pile partagée (m
) pour que serpent 2 traite. Enfin,1(
mange le dernier personnage de la queue de serpent 1. Puisque c'est là que se trouve le pointeur d'instruction, le serpent meurt.Serpent 2
)
n'a aucun effet la première fois.L!34*
pousse34
si la pile partagée est vide,0
sinon. Nous avons ensuite.
dupé et(
mangé autant de personnages.(
nous venons d'exécuter. Par conséquent, les boucles de contrôle reviennent au début de la ligne, où)
régurgite les caractères que nous venons de manger (après avoir poussé une copie supplémentaire de34
) et répétez le test de longueur de pile.0
et l'exécution continue:Si
bascule vers la pile partagée et entre un autre caractère..1+!24*
pousse24
si ce caractère était -1 / EOF,0
sinon. Sur EOF,(
avale 24 caractères - y compris l'IP - et le serpent meurt. Sinon, l'exécution continue.Y
tire une copie du haut de la pile partagée (le personnage que nous venons de lire) dans la propre pile de serpent 2 pour une utilisation future. Calcule ensuite.@@.@=@.@32-=\@+2*
si le nouveau caractère est égal au premier caractère ou au premier caractère moins 32, en poussant2
si c'est le0
cas et sinon. Nous.
dupliquons et(
mangeons autant de personnages:(
régurgite les 2 personnages que nous venons de manger et l'exécution se poursuit avec le personnage suivant.y
remontons le personnage de la pile de Snake 2,o
sortons puis nous bouclons.Voyez-le en action
Afficher l'extrait de code
la source
C, 60 octets
n,c,d;main(){for(;read(0,&c-n,1);n=2)d-c&31&&n&&putchar(d);}
Edit: correction d'un bug qui provoquait l'impression d'un octet nul au début
la source
Python 2, 43
Ceci est quelque peu basé sur ma réponse Pyth, mais il est également lié à certains commentaires de ThomasKwa et xnor d' ici . Surtout parce que je voulais que cette réponse existe.
la source
Vim, 30 frappes
Désolé de dénicher, mais je ne vois aucune réponse de Vim D:
Explication:
If<Right>xh@x.<Esc>
Écrire une macro (récursive) autour du premier caractère
Déplacer vers la gauche (
h
) est nécessaire pour rester à gauche du caractère non lu suivantL'ajout d'un caractère (
.
) à la fin est nécessaire au cas où le second doit être supprimé"xy0
Copiez la macro dans le registrex
7|
Passer au 7e caractère@x
Exécutez la macro depuisx
2|~
Changez le cas du premier caractère (en fait à la 2e position)0"xd7|
Coupez la macro dans le registrex
@x
Exécutez la macro depuisx
0x
Retirez la marque de réservation.
la source
:D
Je vote toujours Vim!Haskell, 52 octets
la source
r(h:s)=[c|c<-s,t c/=t h]
.TI-BASIC, 164 octets
Pour les calculatrices graphiques TI-83 + / 84 +.
TI-BASIC est clairement le mauvais outil pour le travail.
Je ne suis pas sûr à 100%, mais j'ai passé plus de six heures à ce sujet, et cela semble être la solution la plus courte possible.
Pour tester cela avec des entrées non majuscules (ou pour le taper dans votre calculatrice), créez un programme différent avec le contenu
AsmPrgmFDCB24DEC9
et exécutez-le en utilisantAsm([whatever you named it]
pour activer le mode de frappe en minuscules.la source
Lua,
9378 octetsla source
Lisp commun, 77
Maudissez ces longs noms de fonctions (et les parenthèses (mais je les aime quand même (: 3))).
la source
C,
6561 octetsCompile avec des avertissements. Lit la chaîne de
argv[1]
. Exemple en lignela source
main(int c,char**v)
versmain(c,v)char**v;
et(**v-c)%32
vers**v-c&31
.C ++,
1009998 octetsJuste un octet de plus pour passer sous 100.
getchar()
retourne-1
quand il lit la fin du flux, c'est pourquoi le~
for
cycle est en cours . (~-1 == 0
)Non golfé
la source
&&putchar(c)
place de?putchar(c):0
?f-c&31
comme dans la réponse C?AppleScript,
209201 octetsMa seule consolation est que j'ai battu Brainfuck.
How this works is that I take input through
a
, get the length ofa
and mark it asn
, and set an output variableo
. For every character that I find that does not contain the first character of a (a's character 1
), I concatenate it too
. The final line printso
.Note: This automatically supports all Unicode. c:
la source
My only consolation is that I beat Brainfuck.
looks like i'd better get golfing ;)Retina, 16 bytes
Save the code with a trailing linefeed and run it with the
-s
flag.How it works: the trailing linefeed makes this a replacement stage, such that any matches of the given regex are replaced with an empty string. The
i
turns on case-insensitive mode which also makes backreferences case-insensitive. Finally, the regex simply matches and captures a single characters and then checks whether the first character in the string is the same (up to case) using a backreference.la source