Su jefe acaba de enviarle por correo electrónico una lista de 12 tareas de programación que necesita realizar lo antes posible. Las tareas son bastante simples, pero su jefe, siendo un joven magnate del software atrapado por las redes sociales, insiste en que sus soluciones puedan encajar en un solo tweet de Twitter .
Esto significa que solo tiene 140 bytes de código para resolver todas las tareas, un promedio de 11.67 bytes por tarea. (Sí, Twitter cuenta caracteres, pero su jefe dijo específicamente bytes).
Te das cuenta de que no hay forma de resolver las 12 tareas en 140 bytes, pero sospechas que tu jefe no probará todas tus soluciones. Entonces procedes a resolver tantas tareas como puedas, omitiendo por completo algunas de ellas. Su mentalidad es que no importa qué subconjunto de tareas complete, solo importa que el subconjunto sea lo más grande posible .
¿Cuántas tareas puedes completar?
Reto
Escriba hasta 12 programas diferentes, cada uno de los cuales resuelve con precisión una de las 12 tareas enumeradas a continuación. La suma acumulativa de las longitudes de estos programas no puede exceder los 140 bytes.
Alternativamente, puede escribir un solo programa de no más de 140 bytes de longitud que tome un número entero de 1 a 12 y (idealmente) proceda a resolver la tarea correspondiente, tomando más información según sea necesario. No todas las tareas deben funcionar, pero solo las que sí cuentan para su puntaje. Las tareas que no funcionan pueden realizar errores o hacer cualquier otra cosa.
En cualquier caso, un "programa" puede ser una función que toma la entrada como argumentos o solicita e imprime o devuelve la salida. Entonces, por ejemplo, puede escribir una función de 140 bytes que se parezca f(taskNumber, taskInput)
, o puede escribir fragmentos de código separados para cada tarea, algunos como funciones y otros como programas completos.
Otros detalles:
Todo el código debe estar escrito en el mismo idioma.
Como de costumbre, la entrada debe provenir de stdin, la línea de comando, un argumento de función o lo que sea habitual para su idioma. La salida se imprime en stdout o la alternativa más cercana a su idioma, o se devuelve en un tipo apropiado.
Una cantidad razonable de formato de entrada está bien; por ejemplo, comillas alrededor de cadenas o en
\n
lugar de nuevas líneas reales.La salida debe ser exactamente lo que se requiere sin formato extraño ni espacios en blanco. La excepción es una nueva línea final opcional.
El código que solo se ejecuta en un entorno REPL no constituye un programa o función.
No puede escribir múltiples programas que resuelvan múltiples tareas. Es un programa que (idealmente) resuelve todas las tareas o (idealmente) 12 programas que resuelven una sola tarea.
Publicar una solución de tarea que no escribió o que solo modificó ligeramente no está permitido sin atribuir al autor original, e idealmente obtener permiso también. Si su respuesta compone principalmente las soluciones más cortas de todas las otras respuestas, entonces debería ser una wiki comunitaria.
Tanteo
El envío que completa la mayoría de las tareas es el ganador. Si se empatan dos envíos, gana el que tenga menos bytes. Si los recuentos de bytes están vinculados, la presentación anterior gana. Las respuestas wiki de la comunidad no pueden ganar.
¡Asegúrese de decirnos qué tareas resolvió, no solo cuántas!
Handicap para no golfistas:
Es probable que este desafío esté dominado por los idiomas de golf . Muchos idiomas pueden tener problemas para resolver incluso una o dos tareas dentro de 140 bytes. Por lo tanto, puede enviar una respuesta no competitiva donde el límite es de 3 tweets, es decir, 420 bytes. Todas las demás reglas siguen siendo las mismas.
Tareas
Tarea 1: ¿pueden tres números formar un triángulo?
Tome tres enteros positivos y genere un valor verdadero / falso que indique si tres líneas con esas longitudes podrían o no formar un triángulo . No puede asumir que los números vienen en un orden particular.
Ejemplos verdaderos (uno por línea):
20 82 63
1 1 1
2 3 4
1 2 2
Falsy ejemplos:
6 4 10
171 5 4
1 1 2
1 2 3
Tarea 2: más cerca de un millón
Dada una cadena de exactamente 7 dígitos decimales (0-9), reorganícelos para obtener un número lo más cercano posible a un millón. Es decir, abs(1000000 - rearrangedNumber)
debe minimizarse.
Imprima o devuelva el número resultante como un entero, no una cadena (por lo que no debería haber ceros a la izquierda a menos que esa sea la norma para su idioma).
por ejemplo, una entrada de 9034318
debería resultar en 984331
(y no 1033489
).
2893984
debería convertirse 2348899
.
0001000
debería convertirse 1000000
.
0000020
debería convertirse 200000
.
Tarea 3: Simulador de teclado simple
Tome una cadena de letras minúsculas (az), espacios y corchetes angulares <>
. Leída de izquierda a derecha, esta cadena representa las teclas que se presionaron en un teclado estándar mientras estaba abierto un editor de texto inicialmente vacío. Las letras y el espacio corresponden a sus teclas normales pero <
corresponden a la tecla de flecha izquierda y >
a la tecla de flecha derecha, las cuales mueven el cursor cuando se presionan.
<
mueve el cursor un carácter hacia la izquierda, o no hace nada si el cursor está al comienzo de la cadena.
>
mueve el cursor un carácter hacia la derecha o no hace nada si el cursor está al final de la cadena.
Imprima la cadena que estaría en el editor de texto una vez que se hayan presionado todas las teclas de la cadena de entrada. No se permite emitir códigos de escape para mover el cursor.
Siempre habrá al menos un carácter de tecla sin flecha en la entrada.
por ejemplo, la entrada ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<f
debería rendir the quick brown fox
.
op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>m
debería dar llammoptimizer
.
e< <c<b<a
debería dar abc e
.
<<<>><><<><toast>><<>><><<>><
debería dar toast
.
Tarea 4 - Letras de FILTHE
En muchas fuentes, 6 de las mayúsculas las letras del alfabeto Inglés consisten enteramente de líneas horizontales y verticales: E
, F
, H
, I
, L
, y T
. Llamaremos a estas letras FILTHE.
Tome una cadena de letras mayúsculas (AZ) y cuente el número de líneas en las letras FILTHE, generando el entero resultante.
E
, F
, H
, I
, L
, Y T
tienen 4, 3, 3, 3, 2, y 2 líneas, respectivamente.
por ejemplo, GEOBITS
tiene 4 + 3 + 2 = 9 líneas que forman parte de las letras FILTHE (para .E..IT.
), por lo que la salida debería ser 9
.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
debería salir 17
.
ABCDGJKMNOPQRSUVWXYZ
debería salir 0
.
FILTHYLINESINLETTERS
debería salir 39
.
Tarea 5: Alex Recursivo A.
Nuestro moderador Alex A. tiene una inicial bastante misteriosa, "A".
Ahora no estoy seguro, pero creo que A.
significa .A xelA
. Y también estoy bastante seguro de que .A
allí existe sigilosamente Alex A.
.
Por lo tanto, para obtener el nombre completo de Alex debemos expandir los A.
'sy .A
' s:
Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.
Haga que su programa tome un número entero no negativo y lo expanda Alex A.
muchas veces, generando la cadena resultante.
Así se
0
vuelve Alex A.
, se
1
vuelve Alex .A xelA
, se
2
vuelve Alex Alex A. xelA
, se
3
vuelve Alex Alex .A xelA xelA
, se
4
vuelve Alex Alex Alex A. xelA xelA
, se
5
vuelve Alex Alex Alex .A xelA xelA xelA
,
etc.
(Hice esto porque me sentí mal por dejar inadvertidamente a Alex fuera de mi desafío tributo mod .: P)
Tarea 6 - Rotación del teclado numérico
Tome un número entero del 1 al 9 inclusive (puede tomarlo como una cadena). Salida del cuadrado de dígitos 3 × 3
789
456
123
girado en incrementos de 90 ° de modo que el dígito de entrada aparezca en cualquier lugar de la fila superior. Cuando 5
se ingresa, cualquier rotación es válida, ya que 5
no se puede girar hacia arriba.
por ejemplo, cuando 3
se ingresa, ambos
963
852
741
y
321
654
987
Son salidas válidas.
Para entrada 4
, solo
147
258
369
Es una salida válida.
Tarea 7: división de dígitos en decenas
Tome una cadena no vacía de dígitos decimales (0-9) y genere un valor verdadero si se puede dividir en secciones contiguas donde todos los dígitos en cada sección sumen exactamente 10. Si esto no es posible, genere un valor falso.
por ejemplo, 19306128
se pueden dividir como 19|3061|28
, las secciones suman 10 (1 + 9, 3 + 0 + 6 + 1, 2 + 8), por lo que se debe generar un valor verdadero.
Ejemplos verdaderos (uno por línea):
19306128
073
730
0028115111043021333109010
2222255
Falsy ejemplos:
6810410
9218
12341
5222225
000
Tarea 8 - Reloj cuadrado
Tome una cuerda multilínea de tamaño constante.
Salida 12
si la entrada es
_ _
| | |
|_ _|
Salida 3
si la entrada es
_ _
| |_|
|_ _|
Salida 6
si la entrada es
_ _
| | |
|_|_|
Salida 9
si la entrada es
_ _
|_| |
|_ _|
No hay otros casos de entrada.
Tarea 9 - Arte del soporte
Tome en una cadena de 4 bytes que contiene uno de cada una de las ménsulas izquierda (
, [
, {
, y <
en cualquier orden.
Agregue los corchetes derechos correspondientes para que la cadena tenga 8 bytes de longitud y tenga una línea de simetría vertical. por ejemplo se [<({
convierte [<({})>]
.
Luego invierta cada paréntesis en esta cadena. por ejemplo se [<({})>]
convierte ]>)}{(<[
.
Imprima la cadena de soporte de 8 bytes original con la versión invertida arriba y abajo en líneas separadas.
Entonces la salida final para la entrada [<({
sería
]>)}{(<[
[<({})>]
]>)}{(<[
Del mismo modo, la salida para <({[
debería ser
>)}][{(<
<({[]})>
>)}][{(<
La entrada (<<[
no es válida porque {
falta y hay un extra <
.
Tarea 10 - Perimiterizar
Tome una cuadrícula de texto rectangular (1 × 1 como mínimo) hecha de .
's que representan espacios vacíos y X
' s que representan mosaicos sólidos. Las celdas más allá de los límites de la cuadrícula se consideran vacías. Puede suponer que cada una de las 4 filas y columnas del borde de la cuadrícula contendrá al menos una X
.
Por ejemplo, una entrada válida podría ser:
XXX.....X.....
X..X...X.X....
XXX.....X....X
Imprima otra cuadrícula de texto rectangular en la que se convierte cada celda vacía que se encuentra junto a una X
ortogonal o diagonal, incluidas las que están fuera de la cuadrícula de entradao
. Así que esencialmente o
se dibuja un perimitador alrededor de todas las porciones de mosaicos sólidos. La nueva cuadrícula no debe ser más grande de lo que debe ser.
Entonces la salida del ejemplo anterior sería:
ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo
Del mismo modo, la salida de entrada XXX..X.X
debe ser
oooooooooo
oXXXooXoXo
oooooooooo
y salida
oooooooooo.
oXXXooXoXo.
oooooooooo.
sería inválido ya que la columna vacía más a la derecha es innecesaria.
Puede utilizar cualquiera de los 3 distintos ASCII imprimibles caracteres en lugar de .
, X
, y o
.
Tarea 11 - Plaza Sator
Salida del cuadrado de Sator :
SATOR
AREPO
TENET
OPERA
ROTAS
Cualquiera de las letras puede ser minúscula o mayúscula, por lo que
SatOR
aRePO
tenet
OPERa
RoTaS
También es una salida válida.
No hay entrada
Tarea 12 - Primer Tweet
No ingrese nada, pero envíe una cadena ASCII imprimible de 140 bytes que contenga al menos uno de cada uno de los 95 caracteres ASCII imprimibles. (Entonces 45 caracteres serán duplicados).
La suma de los códigos de caracteres de los 140 bytes en esta cadena debe ser un primo de Sophie Germain , es decir, un número primo p
tal que 2p+1
también sea primo. El código de caracteres para el espacio es 32, 33 para !
, 34 para "
, y así hasta 126 para ~
. La suma podría calcularse en Python como sum(map(ord, myString))
.
Un ejemplo de salida es:
! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d
La suma del código de caracteres es el primo 12203 cuyo primo seguro correspondiente es 24407.
import
s? Digamos que escribo 5 funciones donde 2 necesitan el mismo módulo (por ejemplo import Math
), ¿se cuenta esto dos veces?