Introducción
Me encontré con este patrón (inútil) el otro día mientras veía la televisión. Lo llamé "el patrón 9" porque el primer número que lo usó fue 9. La esencia de esto es que ingresas un número (digamos x ) y luego regresas:
- X
- x + ( x / 3) [llamemos a esto y ]
- dos tercios de y [llamemos a esto z ]
- z + 1
Entonces, si pongo dentro de este patrón el número 9 como x , esto es lo que saldría:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 sobre 3 es 3, y 9 + 3 es 12]
- 8 ( 12 veces dos tercios) [un tercio de 12 es 4 y 4 * 2 es 8]
- 9 ( 8 + 1 es 9)
Desafío
Escríbeme una función (en cualquier lenguaje de programación) que tome un número y genere una matriz entera usando el patrón.
Algo así como este código psuedo:
function ninePattern(int myInt) returns IntegerArray {
int iterationA = myInt + (myInt / 3);
int iterationB = iterationA * (2 / 3);
int iterationC = iterationB + 1;
IntegerArray x = [myInt, iterationA, iterationB, iterationC];
return x;
}
Aclaraciones
Las discusiones han suscitado comentarios sobre las especificaciones de la pregunta. Esta sección está destinada a aclarar algunos de esos.
"mejor contar en bytes que en caracteres"
Elegí personajes porque (para mí, al menos) sería más fácil de juzgar. Por supuesto, no puedo cambiar eso ahora. (muchas respuestas ya están publicadas)
"redondeo"
El redondeo sigue esta rima:
Si es 5 o más, aumente la puntuación.
Si es 4 o menos, déjelo descansar.
En pocas palabras, si es algo así como 4.7 o 3.85, redondee a 5 y 4 respectivamente.
Ejemplos
Input => Result
9 => [9, 12, 8, 9]
8 => [8, 11, 7, 8]
6 => [6, 8, 5, 6]
23 => [23, 31, 21, 22]
159 => [159, 212, 141, 142]
Sin embargo, si los números son algo así como 2.3 o 10.435446, redondea a 2 y 10 respectivamente.
"ayuda de idioma"
Usted es libre de no usar funciones y / o matrices SI Y SOLO SI el idioma de su elección no los admite. Si lo hace (incluso si aumentará el recuento de tus personajes), debes usarlos .
fuente
Respuestas:
MarioLANG,
659621591582556543516458418401352308369 bytesel redondeo es bastante costoso: /
Pruébalo en línea
Bueno, esto fue más divertido de lo esperado, probablemente no sea óptimo, pero supongo que voy a llegar allí.
Tiempo de explicación:
(para la versión de 352 bytes)
primero obtenemos el argumento y lo imprimimos:
Suficientemente simple
luego pasamos a la mayor parte del programa: la entrada de división / 3
que es una conversión ligeramente modificada de la división brainfuck
que toman como entrada
y devolverte
una vez que tenemos la división, la usamos para obtener la suma de n y n / d e imprimirla
entonces necesitamos hacer otra división: (2 * (n + n / d)) / 3
entonces obtenemos (2 * (n + n / d)
y ponerlo con 3 nuevamente en la división
en ese punto todo explotó, Mario está atrapado en un bucle infinito haciendo división en números cada vez más grandes, para siempre.
y para arreglar que necesitamos una manera de diferenciar entre la primera y la segunda división, termina siendo que, oh alegría, tenemos una manera
básicamente miramos si la x en
es 0, si es significa que estamos en la primera división
de lo contrario, estamos en la segunda división, y solo imprimimos el resultado de la división, agregamos 1 y luego lo imprimimos nuevamente
y voilà fácil como pastel.
fuente
Emotinomicon 99 bytes, 33 caracteres
Explicación:
fuente
MATL, 14 bytes
Pruébalo en línea
Bastante simple,
v
concatena la pila en una matriz.Xo
se convierte a un tipo de datos entero, y todas las operaciones posteriores son operaciones enteras.fuente
Cheddar , 27 bytes
$0
es variable con entrada. Cheddar simplemente no es un lenguaje de golf ¯ \ _ (ツ) _ / ¯, también esto no es competitivo porque la funcionalidad de entrada de Cheddar se realizó después de este desafío.Sin golf:
fuente
Java,
86828485 caracteresLa letra
d
colocada justo después de un entero hace que el entero adouble
.Sin golf:
Sin la clase (
class c{}
tiene 8 caracteres de longitud), se reduce a 76 caracteres:Versión más precisa en 110 caracteres (118 con la enumeración): utiliza
float
s porque nadie tiene espacio para emitirMath#round(double)
:fuente
I + (I / 3)
que utiliza una división entera, lo que significa que las fracciones se descartan y, por lo tanto, el resultado no se redondea correctamente.Java,
5680 bytesComo algunos usuarios señalaron, esta solución (como algunas otras en Java) no redondea los datos correctamente. Así que ahora estoy presentando una solución un poco más larga que debería devolver el resultado correcto
o versión de lamda de 60 bytes
Versión de golfy sin golf
o 36 bytes definidos como lambda
fuente
Java, 64 bytes
Notas
Sin golf
Salida con i = 9
fuente
Scratch, 33 bytes
Pide entrada, conjuntos
a
a entrada redondeados, conjuntosb
yc
sus respectivos cambios, luego dice los cuatro números, separados por comas.fuente
Java 8 lambda,
109817975 caracteresPorque ... ya sabes ... incluso Java puede jugar al golf ...
Lambda sin golfista en clase:
Supongo que se me permite usar longs, ya que también son de tipo entero. Lamentablemente, uno necesita redondear correctamente los enteros y, por lo tanto, un lanzamiento "corto" no funciona. Al usar longs, no necesitamos devolver los resultados de redondeo a ints.Actualizar
¡Usando el pequeño truco + 0.5 y luego lanzando el truco, mantenemos el redondeo correcto y ahorramos 2 caracteres!
Además, este truco ya no requiere el uso de mucho tiempo, por lo que podemos volver a afeitarnos con 4 caracteres más.
fuente
a->{
y el final}
para -5 bytes.Mathematica - 21 bytes
Acabo de recibir Mathematica de mis hermanos RPi, así que probarlo por diversión y qué mejor manera que un desafío PPCG.
Define una función anónima. Pruébalo como:
fuente
Python 3, 45 bytes
Vea este código ejecutándose en ideone.com
fuente
Lua, 52 bytes
Este programa toma un número por argumento de línea de comando y devuelve la matriz correspondiente. Los programas en lua son técnicamente funciones, ya que el intérprete siempre los encapsulará en una función. Esta es también esta mecánica que se utiliza cuando "llama" a códigos en otros archivos (básicamente usa
loadfile
/dofile
).fuente
En realidad, 21 bytes
Este programa declara una función que realiza las operaciones requeridas en el valor de la pila superior.
Pruébalo en línea! (el extra
.
al final evalúa la función e imprime el resultado)Explicación:
fuente
Mathcad, [tbd] bytes
Mathcad codegolf byte equivalance aún no se ha determinado. Tomando un recuento de teclado como un equivalente aproximado, la solución es de aproximadamente 40 bytes.
fuente
05AB1E , 15 bytes
Código:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
Pyke, 11 bytes
Pruébalo aquí!
fuente
Javascript, 50 bytes
Convierto mi solución java a JavaScript y la hojeé un poco.
fuente
C ++ 0x -
95102185189109129 caracteresDegolfed
fuente
p+(p/3)*(2/3)
cuál es enp+(2*p/9)
lugar de(p+(p/3))*(2/3)
Erlang, 80 bytes
Para ejecutar, guarde como f.erl , compile y llame a la función. Devolverá una lista de entradas:
Tenga en cuenta que Erlang convierte automáticamente int s en caracteres ASCII si está en el rango de valores ASCII porque Erlang no tiene un tipo char . Llamar a la función con 100 le da la mejor lectura [100,133,88,89] .
Sin golf:
fuente
Erlang, 46 bytes
Respuesta inspirada por @ fxk8y (no pude publicar un comentario a su respuesta)
También puedes ver los resultados con:
fuente
Pyth, 20 bytes
Explicación:
Prueba aquí
fuente
Jolf, 17 bytes
Define una función
Ώ
. Toma entrada implícitamente, por lo que también funciona como un programa completo. Pruébalo aquí!fuente
Mathematica, 51 bytes
Función anónima que se ajusta a la versión actual (en el momento de la publicación) de la publicación, lo que implica redondear en cada paso.
FoldList
Es una operación típica en la programación. Se invoca comoFoldList[f, list]
y aplica la función de dos argumentosf
repetidamente al resultado (o al primer elemento de la lista en la primera iteración), tomando el siguiente elemento de la lista como su segundo argumento.Ungolfed:
#2 @ # &
es una función anónima que aplica su segundo argumento al primero. Por lo tanto, el argumento de listaFoldList
consiste en las funciones sucesivas que se aplicarán a la entrada.Debido a que la entrada es entera y las divisiones son 3, nunca habrá un resultado como 4.5, por lo tanto, no hay necesidad de preocuparse por las reglas de redondeo cuando el último dígito es un
5
: siempre estará claramente más cerca de un entero u otro.fuente
Dyalog APL , 33 bytes
fuente
Desmos, 37 bytes
Pruébelo en línea ¡
Yay para idiomas no convencionales!
fuente
CJam, 21 bytes
Comentarios son bienvenidos
Explicación
qi__
- Lea la entrada como un entero y duplíquelo dos veces3D/+mo
- Divida una instancia de la entrada por 3, luego agréguela a la segunda instancia para hacer y_2d3/*i
- Duplica y, luego multiplícalo por .6Editar: Olvidé hacer los primeros tres un doble, por lo que el programa se interrumpió. Fijo.
fuente
Axioma, 59 bytes
prueba
fuente
PHP, 60 bytes
Pruébalo en línea!
fuente
PHP, 67 bytes
fuente