La tarea
Su tarea es crear un programa o una función que, dada una entrada, emite el texto de entrada con letras al azar en mayúscula, mientras mantiene las letras ya en mayúscula en mayúscula.
Toda combinación de mayúsculas y minúsculas debería ser posible. Por ejemplo, si la entrada era abc
, no debe haber una probabilidad no cero de la salida de cualquiera de las siguientes combinaciones: abc
, Abc
, aBc
, abC
, ABc
, AbC
, aBC
o ABC
.
Entrada
Su entrada es una cadena, que contiene cualquier número de caracteres ASCII imprimibles, por ejemplo Hello World
. Las salidas para que la entrada incluyen HeLLo WoRlD
, HElLO WOrld
, etc.
Tanteo
Este es el código de golf, por lo que gana la respuesta más corta en cada idioma.
Japt , 6 bytes
¡Pruébelo en línea!
Explicación
fuente
Python 2 ,
6665 bytesPruébalo en línea!
fuente
C,
4746 bytes¡Gracias a @ l4m2 por guardar un byte!
Pruébalo en línea!
Sería 42 bytes, si se puede suponer que
{|}~
no aparecen en la entrada:Pruébalo en línea!
fuente
srand(1)
al inicio del programa, por lo que en cada ejecución la secuencia de valores devueltos porrand()
será la misma).f(char*s){for(;*s++-=(*s-'a'<26&rand())*32;);}
para algunos trabajos de compilación (def.-funsigned-char
)'a'
a97u
obras y ni siquiera requiere la-funsigned-char
bandera.'a'
(que essigned int
, nounsigned char
) de*s
(que esunsigned char
),*s
se promueve ensigned int
lugar deunsigned int
, por lo tanto, los valores negativos son posibles y la comparación no funciona según lo previsto.Jalea , 5 bytes
Otro bytes el polvo gracias a dylnan.
Pruébalo en línea!
Explicación
fuente
ŒṘ
más a menudo para ver cómo se representan las cosas bajo el capóPerl 5 , 23 bytes
Código de 22 bytes + 1 para
-p
.Pruébalo en línea!
fuente
JavaScript (ES6), 56 bytes
Si no se requiere una aleatoriedad uniforme, podemos ahorrar 6 bytes utilizando la hora actual como fuente de aleatoriedad:
Esto tiende a mayúsculas o dejar solo todas las letras a la vez.
fuente
AbC
porque el tiempo no cambiará tan rápidoR , 66 bytes
Pruébalo en línea!
Otra respuesta de R.
fuente
for
bucle! Buena esa.Excel VBA,
747164 BytesLaRandomize
llamada siempre hace que la salida aleatoria sea costosa en VBA :(Función de ventana inmediata anónima de VBE que toma entrada del rango
[A1]
y salidas a la ventana inmediata de VBE. Produce un 50% (en promedio) deUCase
salida d.fuente
Randomize:
y cambiandoRnd
con[RAND()>.5]
. O simplemente ignóralo. :)[Rand()]
llamada es solo psuedo-random y tiene una duración de aproximadamente 10 ^ 13, lo que la hace funcionalmente idéntica a la llamada unRandomize
dRnd
, de hecho, los dos usan la misma semilla (que laRandomize
llamada establece mediante latimer
función salida).Randomize
llamada y usar en su lugarRnd>.5
Carbón ,
87 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Rubí, 40 bytes
Función lambda que toma una cadena. Guardado 1 byte gracias a Arnauld. Guardado 5 bytes gracias a Snack.
fuente
<1
lugar de==1
?<s>
etiqueta, por ejemplo, " Ruby, <s> 46 </ s> 40 bytes ." Por supuesto que no es necesario.APL + WIN, 37 bytes
Solicita entrada de pantalla, identifica letras minúsculas y las convierte aleatoriamente a mayúsculas.
fuente
R ,
8988 bytessuperado por djhurio!
Pruébalo en línea!
Este programa toma cada carácter y, con probabilidad, 1/2 lo convierte a mayúsculas o lo deja solo. Es posible ajustar esta probabilidad jugando con diferentes valores de
df
y0
.rt
se basa en la distribución t de Student, que tiene una mediana de 0 con cualquier grado de libertad (seleccioné1
ya que es el número más pequeño posible).fuente
05AB1E ,
65 bytesGracias Adnan por -1 byte
Pruébalo en línea!
Explicación
Método tomado de la respuesta de @ totallyhuman
fuente
ε„luΩ.V
fue mi intento, agradable!Ruby, 39 bytes
->s{s.gsub(/./){[$&,$&.upcase].sample}}
En gran parte inspirado de la respuesta de displayname . (No pude comentar para sugerir esta versión de un byte por falta de reputación, lo siento, nombre para mostrar )
fuente
Swift 4, 86 bytes
fuente
Java 8, 46 bytes
Esta lambda es de
IntStream
aIntStream
(secuencias de puntos de código).Pruébalo en línea
Distribución de capitalización
Solía ser mayúscula o minúscula una condición bastante sensata
Math.random()<.5
, que se cumplía la mitad del tiempo. Con la condición actual deMath.random()>0
(que ahorra un byte), las mayúsculas se producen prácticamente todo el tiempo, lo que hace que un programa de prueba sea inútil. Pero sí satisface el requisito de aleatoriedad.Expresiones de gratitud
fuente
z
. Sin embargo, podría lanzarlo con una calificación.Funky , 55 bytes
Pruébalo en línea!
Gracias a las comas opcionales, es un byte más corto para hacer
0s.upper
en la definición de la tabla, lo que significa quemath.random
elegirá aleatoriamente1
o2
, que hacermath.random(0,1)
en el azar y no tener el0
.fuente
R ,
60 59 58 57 5663 bytesPruébalo en línea!
Enfoque diferente de las otras dos respuestas R aquí y aquí . ¡Mejorado y reparado gracias a Giuseppe!
fuente
90
como[
, pero esto soluciona por +7 bytes que todavía Golfier es que la respuesta de djhurioOuroboros , 25 bytes
Pruébalo aquí
La única parte de fantasía es el flujo de control,
.b*)
. Hablemos primero del resto.Luego volvemos al principio de la línea. El flujo de control implica cambiar dónde está el final de la línea; Si se mueve a la izquierda de la IP, la ejecución termina. Así:
Cuando el código de char es positivo,
)
no funciona, ya que el final de la línea está lo más a la derecha posible. Pero cuando todos los personajes han sido leídos,i
da-1
. Luego, movemos el final de los-11
caracteres del código a la derecha, es decir, 11 caracteres a la izquierda. Toma un par de iteraciones, pero finalmente la IP ha pasado el final del código y el programa se detiene.fuente
MATL ,
1211 bytesPruébalo en línea!
Guardado 1 byte gracias a @LuisMendo
fuente
Brachylog , 5 bytes
Pruébalo en línea!
Explicación
fuente
Alice ,
1715 bytesGracias a Leo por guardar 2 bytes.
Pruébalo en línea!
Explicación
Este es el marco habitual para programas en gran medida lineales que operan completamente en modo ordinal.
Primero intenté hacer esto completamente en modo Cardinal, pero determinar si algo es una letra basada en el código de caracteres probablemente tomaría más bytes.
fuente
Wolfram Language (Mathematica) ,
524944 bytesPruébalo en línea!
Utiliza la forma del operador de
StringReplace
: proporcionándole una regla (o una lista de reglas) pero ninguna cadena proporciona una función que aplica esa regla a cualquier cadena que le dé como entrada.Podríamos hacerlo mucho mejor (
RandomChoice@{#,Capitalize@#}&/@#&
es 34 bytes) si decidiéramos tomar como entrada (y producir como salida) una lista de caracteres, que la gente a veces argumenta que está bien en Mathematica porque es el único tipo de cadena que hay en otros idiomas. Pero eso no es divertido.-5 bytes gracias a M. Stern
fuente
Capitalize
Random
está en desuso podría ahorrar otros cuatro bytes mediante la implementación de su propioRandomChoice
:StringReplace[c_/;Random[]<.5:>Capitalize@c]
,Random
al trabajo en un momento, pero me olvidé de eso,/;
así que estaba tratando de hacer unaIf
declaración. ¡Gracias!Pyth,
1076 bytesGuardado 3 bytes gracias a ovs y 1 gracias a Steven H.
Pruébalo en línea
Explicación
fuente
r1d
=rd1
, lo que le permite ingresar golf de forma implícita a otro byte.PHP
6353 bytesLogramos reducir el código con 10 bytes siguiendo (parcialmente) siguiendo la sugerencia de Titus.
fuente
$a
. Intente enwhile(~$a=$argn[$i++])
lugar deforeach
(ejecutar como tubería).PowerShell ,
5756 bytesPruébalo en línea!
-1 byte gracias a briantist
Toma la entrada como una cadena, convierte explícitamente la
$args
matriz en una cadena, lachar
convierte como una matriz y luego alimenta los caracteres a través de un bucle. En cada iteración, 50-50 da como resultado el carácter tal cual$_
o lo convertimos a mayúsculas"$_".ToUpper()
(esa es la("$_"|% *per)
basura). Eso se elige al obtener unRandom
número entero y tomarlo mod2
.Esos caracteres se dejan en la tubería y luego se
-join
vuelven a unir en una sola cadena, que se deja en la tubería y la salida es implícita.fuente
"$_".ToUpper()
a("$_"|% *per)
: - /Julia , 35 bytes
Pruébalo en línea!
Todavía es bastante fácil de leer como humano. En Julia rand (A) devuelve un elemento aleatorio de A.
fuente
Rebol , 61 bytes
Prueba:
fuente
Jalea , 16 bytes
Pruébalo en línea!
Explicación
No pude hacer que esto funcione en una sola línea. Asimismo, no sé por qué, pero
2ḶXø³L¤Ð¡
da la lista[None,1,0,..,1]
con0
s y1
S elegido al azar. ElNone
es el motivo de laḊ
en el primer enlace.fuente