El objetivo de este código de golf es crear un código que permita al usuario ingresar una cadena ASCII (contiene solo caracteres ASCII imprimibles ), y su programa genera la variante en minúscula de esta cadena.
Importante: ¡NO está permitido usar una función incorporada que convierta la cadena (o solo un carácter) a minúsculas (como ToLower()
en .NET, strtolower()
en PHP, ...)! Sin embargo, puede usar todas las demás funciones integradas.
Otra nota importante: la cadena de entrada no contiene solo caracteres en mayúscula. La cadena de entrada es una combinación de mayúsculas, minúsculas, números y otros caracteres imprimibles ASCII .
¡Buena suerte!
code-golf
printable-ascii
ProgramFOX
fuente
fuente
s/./\L\0/g
.\L
está integrado?Respuestas:
Shell - 10
Traducción de la solución Perl de @Gowtham usando
/bin/tr
.Ejecución de muestra:
fuente
-p
bandera cuenta como una). Sin embargo, estoy de acuerdo, parece que merece más ser aceptado ...Python 2.7 - 30 (con abuso de reglas terrible y sin complejos)
Como señaló una edición anónima, puedes hacerlo en
2726 en Python 3 :Estoy abusando flagrantemente de las reglas aquí, pero ...
Esto toma las cuerdas y las convierte en mayúsculas . Luego, en una llamada a un método muy poco relacionado, invierte las mayúsculas y minúsculas de la cadena, de modo que cualquier letra minúscula se convierta en mayúscula ... y cambie las letras mayúsculas por minúsculas .
fuente
Perl -
1110 caracteres.y///
es igual quetr///
!En acción:
fuente
-p
opción se cuenta como 1.-
yp
:)-e
(perl -e
->perl -pe
), 3 si asume un script (perl
->perl -p
).Befunge-98-26
22 2119Se basa en el hecho de que
(c-39)/26
es1
solo para códigos de caracteres de caracteres ASCII en mayúsculas (suponiendo la división de enteros). Para cada personajec
, imprimirc + (((c-39)/26)==1)*' '
.Sesión de muestra:
fuente
Pitón 3, 58
fuente
map(ord,input())
bit.map
aplica una función (en este casoord
) a un interable y devuelve un iterable. Es como una forma más corta de(ord(x) for x in input())
.for c in input():print([c,(chr(ord(c)+32))]['@'<c<'['],end='')
. Intenté algunos con elmap(ord,input())
truco, pero no pude multiplicar el valor de verdad por 32 y agregarlo al truco del código de personaje. Muy agradable.Ruby, 18 caracteres
Nada realmente interesante
(ejecutar en IRB)
Solo por diversión: una versión confusa:
Corre así:
Salida
fuente
J - 30
J se lee de derecha a izquierda, así que para desglosar esto:
1!:1]1
&.(a.&i.)
1=I.
.]+32* ...
Obviamente, esta implementación particular solo considera ASCII; pero el enfoque podría extenderse al menos al plano multilingüe básico en Unicode.
fuente
'@Z'(]+32*1=I.)&.(a.&i.)1!:1]1
debería hacerlo)u:(a.i.x)+32*1='@Z'I.x=.1!:1]1
, que coincide con tu longitud pero es mucho menos interesante (ya que no usa 'under'). Hablando de eso, no sabía sobre dyadicI.
, así que gracias por usar eso. :-)(32(23)b.])&.(3&u:)
, debe ser 5 bytes más corto.C
64 63 5955 caracteresfuente
int
y,c>=0
. No son necesarios aquí.~(c=getchar())
2.c-64u<27
Golfscript - 17
Programa:
Explicación:
{}%
asigna el código dentro de cada carácter en cadena...
copia la parte superior de la pila (el personaje) dos veces.64>
1 si el código de caracteres es mayor que 64, de lo contrario 0.\
intercambia los dos elementos en la pila (obtiene la segunda copia de la carta y almacena el resultado64>
en la posición dos).91<
comprueba si el código de caracteres es menor que 91. Similar al paso 3.*
multiplica los resultados de los pasos 3 y 5 juntos. Solo igual a 1, si ambos pasos eran verdaderos.32*
multiplica el resultado del paso 6 por 32. Será 32 si el paso 6 fue 1, de lo contrario 0.+
agregue el resultado (ya sea 32 o 0) en el código de caracteres.Salida de ejemplo:
fuente
Perl: 24 caracteres
Ejecución de muestra:
fuente
chr ord
? Estoy bastante seguro de que no aprenderá nada al leer mi respuesta ;-)-p
parámetro de línea de comando, no una nueva línea.Pitón (33)
En caso de duda, use el caparazón.
Lamentablemente, esto es aún más largo que la solución de Lego.
fuente
tr
comando (que hace lo correcto) en la ruta del shell invocado, supongo.DELPHI
fuente
JavaScript -
109104 (ES6: 95)Gracias a algunos por la versión corregida.
Lo siguiente funciona si el navegador admite expresiones de función ES6:
fuente
undefined
y luegoc.charCodeAt()
falla porque indefinido no tienecharCodeAt
. Un ejemplo de trabajo 105 caracteres:a=prompt();for(b=[i=0];c=a.charCodeAt(i);)b[i++]=String.fromCharCode(c|(c>64&&c<91)*32);alert(b.join(''))
and
lugar de uno lógico ... ¡bien!L=s=>[String.fromCharCode(c.charCodeAt()|(c>"@"&c<"[")*32)for(c of s)].join('')
. Uso:L('SoMeTeXt')
for..of
independientemente.Perl 18
Algo como:
y
Para @FireFly :
no.
Más genérico: 18 caracteres de todos modos:
Esto no cambiará nada en el estado:
Todo funciona bien, pero la ventaja de cambiar
|
(o) por^
(xor) es que la misma sintaxis podría usarse paratoLower
,toUpper
oswapCase
:superior:
y swapCase (18 + 1 = 19 caracteres) :
fuente
-p
siento @manatwork@
en backtick y[\]^_
to{|}~DEL
? Y ahí está la parte difícil ...$&
tiene que coincidir[A-Z]
.javascript 80
(76 si quitas
"X"
)con
prompt
yalert
- 92violín
gracias a @FireFly @some @ C5H8NNaO4 y @minitech
fuente
replace
confunction($){return ...}
, ¿no? Por cierto, el primer parámetro de la función de reemplazo es la cadena coincidente, por lo que puede colocar los parens en la expresión regular.prompt
yalert
para E / S en JS./g
bandera para que esto funcione correctamente.R
71 caracteres:
83 caracteres:
fuente
86
caracteres: las líneas nuevas cuentan como 2 caracteres. ( string-functions.com/length.aspx );
lo que no cuentan solo para un personaje. Podría escribirse:a=as.integer(charToRaw(scan(,"")));b=a%in%(65:90);a[b]=a[b]+32;rawToChar(as.raw(a))
Q, 18
.....
fuente
Q (16)
.......
fuente
PHP (42)
Ejecutar desde la línea de comando:
-R
y las comillas simples no se cuentan.fuente
str_ireplace
hace una búsqueda que no distingue entre mayúsculas y minúsculas, que es estirar las reglas, si no las rompe.PowerShell:
696564He intentado media docena de formas para hacer que Reemplazar funcione de la manera que quiero sin usar la
[regex]::Replace
sintaxis larga , pero no he tenido suerte. Si alguien más tiene una idea de lo que podría funcionar, sugiéralo.Código de golf:
Explicación:
(read-host)
obtiene la entrada del usuario.[regex]::Replace(
...)
le dice a PowerShell que use la coincidencia RegEx para realizar operaciones de reemplazo en una cadena."[A-Z]"
coincide con todas las letras mayúsculas.{
...}
le dice a PowerShell que use un script para determinar el valor de reemplazo.[char]"$args"
toma la coincidencia actual y la escribe como un carácter ASCII.32+
convierte el carácter en un entero, que representa el código ASCII, y aumenta el valor en 32, lo que coincidiría con el código ASCII de la letra minúscula correspondiente.[char](
...)
toma el valor resultante y lo convierte de nuevo a un carácter ASCII.Demo del original:
(Versión actual probada: la captura de pantalla aún no se ha publicado).
fuente
[regex]::Replace
[int]
+
{[char](32+[char]"$args")}
, lo que elimina la necesidad de lanzar explícitamente a int y afeita a un personaje másk2, 15 bytes
Llegué muy tarde a este, pero me pareció genial de todos modos.
También:
Pyth, 10 bytes
Realmente no cuenta porque Pyth fue creado después de que esto fue publicado. Aún genial
fuente
05AB1E , 3 bytes
Puerto de @ user8777 Python 3 respuesta .
Pruébalo en línea.
Explicación:
Pero sin ningún tipo de alteración de mayúsculas y minúsculas:
05AB1E ,
1211 bytes-1 byte gracias a @Emigna .
Pruébalo en línea.
Explicación:
fuente
ÇIS.u32*+çJ
guarda un byte en su versión de 12 bytes..u32*+
enfoque de esta manera:εÇy.u32*+ç]J
pero desafortunadamenteç
envuelve a los personajes en una lista, por lo queJ
se requería un adicional o `después delç
...Javascript, 105
En realidad, no se especificó ningún formulario de salida, así que ejecútelo en la consola Sí, JavaScript realmente es detallado con charcode <-> string
fuente
c.charCodeAt()
- el valor predeterminado es0
si se omite un índice. Además, se rompe en '@', creo (se pone "en minúsculas" en el backtick)Rubí: 66
fuente
C # - 108
Alrededor de 70 solo para el cuerpo del método.
Agregue 5 caracteres para incluir un LF / CR en la salida:
Una versión de LINQ sería más corta:
(103) ... excepto que requiere
using System.Linq;
(total: 121).fuente
Haskell - 58
fuente
Python 3 - 70
Actualizado para los cambios de OP.
Soy un novato en Python, por lo que cualquier crítica es bienvenida.
fuente
Perl, 9 + 1 (para el indicador -p) = 10
\L
se le preguntó específicamente y se le permitió, porque a pesar de que está integrado, no es una función.fuente
Powershell,
5349 bytes-4 bytes gracias @AdmBorkBork
Script de prueba:
Salida:
fuente
¯\_(ツ)_/¯
Código de máquina 8086, 14 bytes
Montado:
Listado sin ensamblar:
Implementado como a
MACRO
(esencialmente una función). Cadena de entradaSI
, longitudCX
. Cadena de salida enDI
.Salida del programa de prueba PC DOS:
Descargue y pruebe el programa de ejemplo TOLOW.COM .
fuente
AC 3C 41
, etc. Agregaré el código de byte hexagonal ensamblado en la parte superior para mayor claridad. codegolf.meta.stackexchange.com/a/12340/84624