Hay algo mal con tu teclado. La Shiftclave tiene una mente propia. Cada vez que escribes un personaje no tienes idea de si saldrá desplazado o no (aunque sea 50-50). Además de las teclas de caracteres estándar, nada en el teclado es funcional. No hay mouse u otro medio de entrada.
De alguna manera, sabes que la única forma de arreglar las cosas es escribir un programa que salga Dear Computer, please stop giving me shift!a stdout. Afortunadamente, su IDE está abierto y es capaz de ejecutar un programa, pero, por supuesto, a medida que lo escribe, no sabrá qué caracteres se cambiarán.
¿Qué secuencia de teclas presionarías para escribir un programa que tenga la mejor posibilidad de trabajar en el primer intento?
Detalles
Está utilizando un teclado QWERTY estándar , por lo que puede presionar 50 teclas de caracteres.
Versiones sin desplazamiento (solo 47):
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Versiones cambiadas (solo 47):
~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?
Las 3 últimas son claves Enter, Taby Spaceque son los mismos desplazada y no desplazada.
Una secuencia de N de estos caracteres tiene 2 N - (recuento de caracteres de espacio en blanco) formas en que podría haberse generado si los hubiera escrito con su teclado defectuoso. Por ejemplo, escribir A Space mpodría haber producido
a mo A mo a Mo A M.
Escriba un programa para estos personajes y observe todas sus 2 N - (recuento de caracteres de espacio en blanco) posibles combinaciones de turnos. Cuantas más combinaciones produzcan, Dear Computer, please stop giving me shift!mejor. Su puntaje es el número de combinaciones de trabajo (programas válidos) dividido por el número total de combinaciones. El puntaje más alto gana.
Notas
- Para programas válidos, la impresión precisa
Dear Computer, please stop giving me shift!y nada más para stdout debería ser el único efecto secundario. - Los programas válidos no deben recibir aportes.
- Los programas inválidos pueden hacer cualquier cosa.
- Los comentarios pueden usarse en cualquier lugar.
- Las respuestas de espacios en blanco no pueden ganar porque obtener una puntuación del 100% es (relativamente) trivial. Aún puede enviar una solución de Whitespace por diversión.
- Su programa debe tener como máximo 1024 caracteres.
Actualización: cambiado Stop giving me shift!para Dear Computer, please stop giving me shift!permitir respuestas más complejas. Las respuestas existentes pueden permanecer como están si se desea.
fuente

Respuestas:
Applescript, 2 0 (100%)
Creo que puedo reclamar una puntuación perfecta aquí:
myFuncse define, entonces el IDE convertirá automáticamenteMYFUNC,myfunc,MyFuNc, etc referencias amyFuncAquí está es:
Gracias a la ayuda de @kernigh y @paradigmsort, esto ahora es de 1020 bytes, ¡solo chirriando por debajo del límite de 1024 bytes!
Explicación:
string id <n>, lo que devuelve el carácter correspondiente al valor ascii.nntiene que ser generado por medios más fundamentales. Específicamente, generamos cada unoncontando una lista y luego agregando otro elemento a esa lista. Elrepeat with q in system infonos permite hacer esto 16 veces, ya quesystem infosiempre devuelve una lista de 16 elementos.texte imprime.Salida:
Usando el
osascriptintérprete, pero el Editor de Applescript funciona igual de bien:fuente
end name. Como es, debo usarsed -e 's/^ *//' -e 's/^end.*/end/' dearcase.scpt | wc -cpara contarlo. Además, se puede bajar 1044-1037 cambiandocount of aacount a, y eliminarlogdelog f as text. Pruebo con un viejo sistema OS X 10.4, donde ellogcomando tiene un resultado vacío;osascriptsolo imprime el resultado, no el registro de eventos, por lo que no obtengo salida a menos que eliminelog.# Interpret all upper case: $ tr A-Z a-z- Los args están al revés, ¿verdad?PHP, 2 ^ -12
PHP siendo PHP, capitalización de
echo,ucwordsystrtolowerno importan. Las llamadas aucwordsystrtoloweraseguran que el caso de las cadenas no va a cambiar la salida.Por lo tanto, los únicos caracteres que no se pueden cambiar son
((,)).(!);(10 caracteres).Cada par de citas también tiene un 50% de probabilidad de ser válida (
''y""son válidas, pero'"y"'no lo son), por lo tanto cada adición de otra potencia de dos.fuente
ucwordsmayúscula la primera letra de cada palabra''o"", así como los paréntesis de cierre, por lo que aunque todavía tiene un 50% de posibilidades de(, el)debería ser automático.strtolower("Dear Computer, '"0)...<?al comienzo del programa?Nota: Esto es en realidad 3 respuestas en una. No entendí el punto de dividirlo en múltiples respuestas cuando son traducciones tan literales entre sí. Si deben separarse, avíseme y me encargaré de eso.
Después de volver a leer las especificaciones, me doy cuenta de que esto no es realmente válido. Cada respuesta tiene> 4000 caracteres de longitud. Pero dejaré esto aquí de todos modos, debido al método diferente.
Python 2, 2 ** - 41
Solo para proporcionar un estilo diferente de solución. Codifica el valor ascii de cada carácter en pestañas, divididas en espacios. El número de pestañas es el número para el valor ascii.
Esta es una solución idéntica en
Pyth, 2 ** - 11
Otra solución idéntica, excepto espacios reemplazados por líneas nuevas, en
Golfscript, 2 ** - 8
fuente
Cjam,
2 -72 -12 oportunidadTiene una idea similar a la primera respuesta de Quincunx , pero en CJam.
fuente
Klugar deC?Espacio en blanco (645 bytes, probabilidad 2 ^ 0)
Dado que este programa solo usa pestañas, espacios y líneas nuevas (que no se ven afectados por los cambios), ofrece una tasa de éxito del 100%.
Ejecución del programa
fuente
CJam, 2 -9 chance, 739 bytes
base64:
Basado en la idea de Optimizer y la respuesta de Quincunx.
fuente
Python 2, 2-20 posibilidades
print,S,+,!, Y.lower()debe ser toda la versión correcta; Eso es 18 caracteres. Las dos comillas para las cadenas también deben alinearse, lo que hace que dos poderes más de dos.Para cualquiera de los
top giving me shift, si se convierte a la versión capital, lo convertimos a minúsculas y funciona correctamente.Lamentablemente, no puedo usar el ingenioso Python
capitalize(), porque eso requiere un personaje más.fuente
VisualBasic.net 2 ^ -18
Caracteres críticos:. ("DearC" + ",!". ())
Probado en LINQPad, Idioma = "Programa VB"
fuente
>en lugar de.mediante el cambioConsole.Write(string)deWrite(string)e intercambiando(string).ToLower()hacia fuera paraLCase(string).Pyth, 2 ** - 15
Parece que no puedo encontrar la versión de Pyth
lower(), por lo que tomaré prestado de Python. Los caracteres que no se pueden intercambiar son+"S"$,!y.lower(), para un total de 14 caracteres. Las comillas después del$must deben coincidir, agregando otra potencia de 2.fuente
lower()- no se estaba acostumbrando lo suficiente. Probablemente debería agregarlo nuevamente.Rant, 2-21
Una serie de metapatrones y
capsllamadas fuerzan el formato adecuado. Los nombres y argumentos de la función no distinguen entre mayúsculas y minúsculas.Versión en línea
fuente
Cjam, 2 -13 oportunidad
Según la cadena actualizada ( 696 bytes).
Solamente
""N/:,2/Kfb:cestán en riesgo en este momento.Pruébelo en línea aquí y dado que este editor de texto está consumiendo todos los espacios, aquí está la esencia con el código correcto.
fuente
VB.NET,
2 ^ -122 ^ -112 -12
2 -11
fuente
Pensé en mi respuesta antes de llegar a la regla de '50 caracteres que incluye solo Enter, Tab, Space '. Entonces el mío no es válido.
Parece tener lenguajes de programación que no distinguen entre mayúsculas y minúsculas es la clave aquí. Alternativamente, si pudieras usar un teclado QWERTY estándar real (incluido el Bloqueo de mayúsculas, el otro Shift, Retroceso y el Período numérico) solo habría 2 posibilidades de 50% necesarias que solo darían como resultado 2 pulsaciones de teclas adicionales por falla. Mi respuesta no válida para una aplicación de consola C # que señala las pulsaciones de teclas reales:
76 prensas mínimas con solo 2 oportunidades necesarias del 50%
fuente
Excel, 2-11
Caso de
PROPERyLOWERno importa. Se+requiere ingresar una fórmula que comience con inserciones automáticas=. Por lo que sólo(,",,,),&,!se pueden romper.fuente