Le but de ce code-golf est de créer un code qui permet à l'utilisateur de saisir une chaîne ASCII (ne contient que des caractères ASCII imprimables ), et votre programme sort la variante minuscule de cette chaîne.
Important: vous n'êtes PAS autorisé à utiliser une fonction intégrée qui convertit la chaîne (ou un seul caractère) en minuscules (comme ToLower()
en .NET, strtolower()
en PHP, ...)! Vous êtes toutefois autorisé à utiliser toutes les autres fonctions intégrées.
Autre remarque importante: la chaîne d'entrée ne contient pas que des caractères majuscules. La chaîne d'entrée est un mélange de caractères majuscules, de caractères minuscules, de chiffres et d'autres caractères imprimables ASCII .
Bonne chance!
code-golf
printable-ascii
ProgramFOX
la source
la source
s/./\L\0/g
.\L
est sûrement intégré?Réponses:
Coquille - 10
Traduction de la solution Perl de @ Gowtham à l'aide de
/bin/tr
.Exemple d'exécution:
la source
-p
drapeau compte pour un). Je suis d'accord cependant, le sien semble mériter plus d'être accepté ..Python 2.7 - 30 (avec un abus de règle terrible et sans excuse)
Comme l'a souligné une modification anonyme, vous pouvez le faire dans
2726 en Python 3 :J'abuse de manière flagrante des règles ici, mais ...
Cela prend les cordes et les couvre en majuscules . Ensuite, dans un appel de méthode très indépendant, il inverse la casse de la chaîne - de sorte que toutes les lettres minuscules deviennent des lettres majuscules ... et permute toutes les lettres majuscules en lettres minuscules .
la source
Perl -
1110 caractères.y///
c'est pareiltr///
!En action:
la source
-p
option est comptée comme 1.-
etp
:)-e
(perl -e
->perl -pe
), 3 si vous supposez un script (perl
->perl -p
).Befunge-98 -
26 22 2119S'appuie sur le fait que ce
(c-39)/26
n'est1
que pour les codes de caractères de caractères ASCII majuscules (en supposant une division entière). Pour chaque caractèrec
, imprimezc + (((c-39)/26)==1)*' '
.Exemple de session:
la source
Python 3, 58
la source
map(ord,input())
fonctionne.map
applique une fonction (dans ce cas,ord
) à un interable et retourne un itérable. C'est comme une forme plus courte de(ord(x) for x in input())
.for c in input():print([c,(chr(ord(c)+32))]['@'<c<'['],end='')
. J'en ai essayé avec l'map(ord,input())
astuce, mais j'ai manqué de multiplier la valeur de vérité par 32 et de l'ajouter à l'astuce de code de caractère. Très agréable.Ruby, 18 caractères
Rien de vraiment intéressant.
(exécuté en IRB)
Juste pour le plaisir: une version déroutante:
Courez comme ceci:
Sortie
la source
J - 30
J est lu de droite à gauche, donc pour décomposer ceci:
1!:1]1
&.(a.&i.)
1=I.
.]+32* ...
De toute évidence, cette implémentation particulière ne prend en compte que l'ASCII; mais l'approche pourrait être étendue au moins au plan multilingue de base en Unicode.
la source
'@Z'(]+32*1=I.)&.(a.&i.)1!:1]1
devrait le faire)u:(a.i.x)+32*1='@Z'I.x=.1!:1]1
qui correspond à votre longueur mais qui est beaucoup moins intéressant (car il ne fait pas usage de 'under'). En parlant de cela, je ne connaissais pas le dyadiqueI.
, donc merci de l'utiliser. :-)(32(23)b.])&.(3&u:)
, devrait être plus court de 5 octets.C
64 63 5955 caractèresla source
int
et,c>=0
. Ils ne sont pas nécessaires ici.~(c=getchar())
2.c-64u<27
Golfscript - 17
Programme:
Explication:
{}%
mappe le code à l'intérieur à chaque caractère de la chaîne...
copie deux fois le haut de la pile (le personnage).64>
1 si le code de caractère est supérieur à 64, sinon 0.\
échange les deux éléments de la pile (obtient la deuxième copie de la lettre et stocke le résultat de la64>
position deux).91<
vérifie si le code de caractère est inférieur à 91. Similaire à l'étape 3.*
multiplie les résultats des étapes 3 et 5 ensemble. Seulement égal à 1, si les deux étapes étaient vraies.32*
multiplie le résultat de l'étape 6 par 32. Sera 32 si l'étape 6 était 1, sinon 0.+
ajoutez le résultat (32 ou 0) au code de caractère.Exemple de sortie:
la source
Perl: 24 caractères
Exemple d'exécution:
la source
chr ord
? Je suis sûr que vous n'apprendrez rien en lisant ma réponse ;-)-p
paramètre de ligne de commande, pas une nouvelle ligne.Python (33)
En cas de doute, utilisez le shell.
Malheureusement, c'est encore plus long que la solution de Lego.
la source
tr
commande (qui fait la bonne chose) sur le chemin du shell invoqué, je suppose.DELPHES
la source
JavaScript -
109104 (ES6: 95)Merci à certains pour la version corrigée.
Ce qui suit fonctionne si le navigateur prend en charge les expressions de fonction ES6:
la source
undefined
, puisc.charCodeAt()
échoue, car undefined n'a pascharCodeAt
. Un exemple de travail 105 caractères:a=prompt();for(b=[i=0];c=a.charCodeAt(i);)b[i++]=String.fromCharCode(c|(c>64&&c<91)*32);alert(b.join(''))
and
au lieu d'un logique ... sympa!L=s=>[String.fromCharCode(c.charCodeAt()|(c>"@"&c<"[")*32)for(c of s)].join('')
. Utilisation:L('SoMeTeXt')
for..of
.Perl 18
Quelque chose comme:
et
Pour @FireFly :
non.
Plus générique: 18 caractères quand même:
Cela ne changera rien dans l'état:
Tout fonctionne bien, mais l'avantage de changer
|
(ou) par^
(xor) est que la même syntaxe pourrait être utilisée pourtoLower
,toUpper
ouswapCase
:toUpper:
et swapCase (18 + 1 = 19 caractères) :
la source
-p
désolé @manatwork@
par backtick et[\]^_
par{|}~DEL
? Et c'est là que réside la partie délicate ..$&
doivent correspondre[A-Z]
.javascript 80
(76 si vous supprimez
"X"
)avec
prompt
etalert
- 92violon
merci à @FireFly @some @ C5H8NNaO4 et @minitech
la source
replace
avecfunction($){return ...}
, non? À propos, le premier paramètre de la fonction de remplacement est la chaîne correspondante, vous pouvez donc supprimer les parens dans l'expression régulière.prompt
etalert
pour les E / S dans JS./g
indicateur pour que cela fonctionne correctement.R
71 caractères:
83 caractères:
la source
86
caractères - les nouvelles lignes comptent pour 2 caractères. ( string-functions.com/length.aspx );
donc non, ils ne comptent que pour un seul caractère. Il pourrait être écrit:a=as.integer(charToRaw(scan(,"")));b=a%in%(65:90);a[b]=a[b]+32;rawToChar(as.raw(a))
Q, 18
.....
la source
Q (16)
.......
la source
PHP (42)
Exécutez à partir de la ligne de commande:
-R
et les guillemets simples ne sont pas comptés.la source
str_ireplace
ne recherche pas la casse, ce qui étire les règles, sinon les enfreint.PowerShell:
696564J'ai essayé une demi-douzaine de façons de faire en sorte que Replace fonctionne comme je le souhaite sans utiliser la longue
[regex]::Replace
syntaxe, mais je n'ai pas eu de chance. Si quelqu'un d'autre a une idée de ce qui pourrait fonctionner, veuillez le suggérer.Code golf:
Explication:
(read-host)
obtient l'entrée utilisateur.[regex]::Replace(
...)
indique à PowerShell d'utiliser la correspondance RegEx pour effectuer des opérations de remplacement sur une chaîne."[A-Z]"
correspond à toutes les lettres majuscules.{
...}
indique à PowerShell d'utiliser un script pour déterminer la valeur de remplacement.[char]"$args"
prend la correspondance actuelle et la tape sous forme de caractère ASCII.32+
convertit le caractère en un entier, représentant le code ASCII, et augmente la valeur de 32 - ce qui correspondrait au code ASCII de la lettre minuscule correspondante.[char](
...)
prend la valeur résultante et la reconvertit en caractère ASCII.Démo de l'original:
(Version actuelle testée - capture d'écran non encore publiée.)
la source
[regex]::Replace
, mais vous pouvez enregistrer 4 caractères en changeant[int]
en+
{[char](32+[char]"$args")}
, ce qui supprime la nécessité dek2, 15 octets
Je suis super en retard sur celui-ci, mais j'ai quand même trouvé ça cool.
Également:
Pyth, 10 octets
Ne compte pas vraiment car Pyth a été créé après sa publication. Toujours cool.
la source
05AB1E , 3 octets
Port de @ user8777 réponse Python 3 .
Essayez-le en ligne.
Explication:
Mais sans aucune modification de casse:
05AB1E ,
1211 octets-1 octet grâce à @Emigna .
Essayez-le en ligne.
Explication:
la source
ÇIS.u32*+çJ
enregistre un octet sur votre version 12 octets..u32*+
approche comme ceciεÇy.u32*+ç]J
ç
J
ç
Javascript, 105
En fait, aucun formulaire de sortie n'était spécifié, alors exécutez-le dans la console Oui, JavaScript est vraiment détaillé avec la chaîne charcode <->
la source
c.charCodeAt()
- par défaut,0
si un index est omis. En outre, les pauses sur '@' je crois (il est "minuscule" dans le backtick)Rubis: 66
la source
C # - 108
Environ 70 pour juste le corps de la méthode.
Ajoutez 5 caractères pour inclure un LF / CR dans la sortie:
Une version LINQ serait plus courte:
(103) .. sauf qu'il l'exige
using System.Linq;
(total: 121).la source
Haskell - 58
la source
Python 3-70
Mis à jour pour les changements d'OP.
Je suis un débutant en Python, donc toute critique est la bienvenue.
la source
Perl, 9 + 1 (pour le drapeau -p) = 10
\L
a été spécifiquement interrogé et autorisé, car même s'il s'agit d'une fonction intégrée, ce n'est pas une fonction.la source
Powershell,
5349 octets-4 octets merci @AdmBorkBork
Script de test:
Sortie:
la source
¯\_(ツ)_/¯
8086 code machine, 14 octets
Assemblé:
Liste non assemblée:
Mis en œuvre en tant que
MACRO
(essentiellement une fonction). Chaîne d'entrée enSI
, longueur enCX
. Chaîne de sortie dansDI
.Sortie du programme de test PC DOS:
Téléchargez et testez l' exemple de programme TOLOW.COM .
la source
AC 3C 41
, etc. Je vais ajouter le code octet hexadécimal assemblé en haut pour plus de clarté. codegolf.meta.stackexchange.com/a/12340/84624