@riker Parece que se trata de encontrar un número que falta en una secuencia. Esto parece ser sobre encontrar un dígito que falta en un conjunto.
DJMcMayhem
10
@Riker No creo que sea un duplicado, dado que el desafío vinculado tiene una secuencia estrictamente creciente (de números potencialmente de varios dígitos), mientras que aquí está en un orden arbitrario.
AdmBorkBork
3
¡Hola Josh! Como nadie más lo ha mencionado hasta ahora, lo dirigiré al Sandbox donde puede publicar ideas de desafíos futuros y obtener comentarios significativos antes de publicar en main. Eso habría ayudado a resolver cualquier detalle (como STDIN / STDOUT) y habría resuelto el dilema duplicado antes de recibir votos negativos aquí.
AdmBorkBork
1
Es una pena que 9-x% 9 funcione para cualquier dígito excepto 0. Quizás alguien más inteligente que yo encuentre la manera de hacerlo funcionar.
Bijan
2
Varias respuestas toman un entero como entrada de función. eso está permitido?
32043 se puede cambiar a un número más hermoso. 99066 es simétrico en el centro (no cambia si se gira 180 grados alrededor del centro) o quizás 97779 (palíndromo, dos dígitos distintos)
Sarge Borsch
1
Si el OP permite imprimir el número dos veces, 764**4puede guardar dos bytes.
@KarlKastor, el módulo 15 en la base 16 funciona de forma análoga al módulo 9 en la base 10. El módulo base-1 es constante al tomar la suma de dígitos, solo porque 10 ≡ 1 (mod base-1). La suma de todos los dígitos posibles es constante, por lo que el dígito faltante es la diferencia de esta constante y el número de entrada (módulo base-1).
La suma de todos los dígitos en Ascii es 525. Este programa resume la entrada y la resta de 525 para obtener el dígito faltante.
((([]())[]{}){()()({}[()])}{} )
Empujará 525. Esto aprovecha el hecho de que sabemos que habrá 9 elementos de entrada para empezar. Esto significa que se []evalúa a 9, lo que nos permite llegar rápidamente a grandes cantidades como 525.
A continuación tenemos el bit:
[{{}}]
que resumirá las entradas y las restará del total.
Si mueve negative(sum(input()))al final, puede abusar de la altura de la pila nilad para empujar 525 más fácilmente. (([][][]()()()){()()({}[()])}{}[{{}}])debería ahorrarle 10 bytes
Pruébalo en línea! Uso: (477-).sum.map fromEnum $ "123456890". 477 es la suma de los códigos de caracteres de los dígitos del 1 al 9, excluyendo 0. Esta función anónima calcula 477 menos la suma de todos los códigos de caracteres de dígitos para encontrar el que falta.
Convertir los dígitos de caracteres en caracteres es un byte más largo:
Me gusta la forma en que todos los idiomas de golf (e incluso algunos idiomas que no son de golf) están usando el mismo algoritmo, pero Jelly logra tener los nombres más cortos para las construcciones que usa, y la menor repetitiva para revertir los argumentos ḟ.
1
@ ais523 APL es letra por letra igual (excepto que sería un fragmento de APL en lugar de una función / programa): Ø= ⎕, D= D, ḟ= ~, como en ⎕D~'867953120'.
Adám
3
Yo, mientras me desplazo por las respuestas: "Estoy prediciendo 3 personajes en Jelly". Bingo. : ^ D
Editar 1 byte guardar thx @Neil, con un truco mucho más inteligente
Xoring todos los valores del 1 al 9 da 1. Xor 1 una vez más y el resultado es 0. Entonces, si falta un valor único, el resultado será el valor faltante.
Puerto de la respuesta de Python de @ xnor, excepto que JavaScript solo tiene un operador restante en lugar de un operador de módulo, por lo que no puedo hacerlo en un solo paso. Editar: Guardado 6 bytes gracias a @Arnauld.
Usted está demasiado enamorado reduce. +1 de todos modos
edc65
@Arnauld No veo que funcione cuando s[0]!='0', pero ya hay una respuesta que usa eval.
Neil
Podrías hacer s=>(15-`0x${s}`%15)%15?
Arnauld
@Arnauld Bah, y ya lo había hecho también para el puerto de Batch ...
Neil
6
Brainfuck, 17 15 bytes
-[-[->-<],]>++.
Pruébalo aquí .
Esta solución funciona solo en Brainfuck estándar (celdas de 8 bits), ya que depende de la envoltura.
Es un día raro cuando Brainfuck puede competir, ¡pero este desafío se alineó bastante bien con la especificación BF!
En lugar de desglosar esta respuesta, me gustaría revisar las iteraciones que hice, porque creo que sería más comprensible (y más interesante).
Nota: esta solución está inspirada en gran medida por la respuesta Brain-Flak de Wheat Wizard .
Explicación
Paso 1, 26 bytes
En su respuesta, Wheat Wizard señaló que la suma de los valores ASCII de 0-9 suma a 525. Y como Brainfuck estándar solo tiene una noción de [0,255], esto hace que el valor sea 525% 256 = 13 . Es decir, restando los valores ASCII de la entrada de 13 le da el dígito faltante.
La primera versión de este programa fue:
1. Poner 13 en la primera celda
2. Tomar entradas en la segunda celda
3. Restar la segunda celda de la primera celda
4. Saltar a 2 si quedan entradas
5. Imprimir la primera celda
Y aquí está el código para la solución simple:
+++++++++++++ #Set the first cell to 13
>, #Take inputs into the second cell
[[<->-],] #Subtract the second cell from the first cell and repeat until inputs are over
<. #Print the first cell
Paso 2, 19 bytes
Como se señaló en su respuesta, dado que sabemos que la entrada tendrá exactamente la longitud 9, podemos usar ese valor como una constante y eliminar esa larga cadena de + al principio.
Tampoco importa en qué momento agreguemos 13 (¡gracias, propiedad conmutativa!), Por lo que lo mezclaremos con los pasos de resta e impresión.
, #Take input to enter the loop
[[->-<], #Subtract the first cell from the second cell
>+<] #Add 1 for each input; totaling 9
>++++ #Add the missing 4 to make 13
. #And print
Esta fue mi respuesta original a este problema, pero podemos hacerlo mejor.
Paso 3, 17 bytes
Curiosamente, la respuesta anterior funciona incluso si comenzamos con un + en lugar de un,
+[[->-<],>+<]>++++.
Brainfuck requería algo en una celda para comenzar un ciclo. Ingenuamente agregamos ese 4 extra al final, cuando podría haber ido a otros lugares.
-[[->-<],>+<]>++.
Con algunos trucos de bucle totalmente intencionales (léase: prueba y error), comenzar el programa con un - lleva a dos resultados interesantes:
Uno se agrega a la segunda celda (guardando 1 byte al final).
Los bucles se ejecutan una vez más, totalizando 10 en lugar de 9 (ahorrando otro 1 byte).
1 + 10 + 2 = 13, y terminamos con la respuesta original.
Mirando hacia atrás, esto es probablemente una crítica excesiva para un programa Brainfuck tan simple.
Paso 4, 15 bytes
Después de pensar un poco más en esta solución, pude cortar 2 bytes.
Quería aclarar algo sobre el paso anterior:
el signo negativo para ingresar al bucle efectivamente agrega 1, pero lo que en realidad está haciendo es restar 255 de la segunda celda (lo que resulta en 1).
Es obvio en retrospectiva, pero restar 1 de la primera celda es lo mismo que sumar 1 a la segunda celda (porque todo en la primera celda se resta de la segunda celda).
-[-[->-<],]>++.
Pude eliminar el "> + <" agregando un "-" al comienzo del primer bucle. Tiene que ir allí, y no donde estaba el "> + <", porque de lo contrario el programa se repetirá infinitamente.
Función pura que toma una cadena como entrada y devuelve un entero. Mathematica tiene nombres de comando largos y es reacio a convertir entre cadenas y enteros, lo que lo hace particularmente malo en este desafío. Lo mejor que pude encontrar fue el algoritmo de la respuesta Ruby de Level River St , que realiza un cálculo basado en el total de los códigos ASCII de la cadena de entrada; en Mathematica, esto usa solo un nombre de comando largo.
Agradable, no he pensado en recortar. Valores alternativos32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
Jörg Hülsermann
5
Bash + coreutils, 19 bytes
Encontré una solución bash más corta , que utiliza un enfoque interesante de suma de comprobación:
El sumcomando imprime una suma de verificación y un conteo de bloques. No conozco muchos detalles, pero el uso de la opción -s(algoritmo del Sistema V) hará que la suma de verificación sea igual a la suma ASCII de cada código de caracteres de entrada. Como tal, la suma de comprobación permanece constante cuando cambia el orden de los mismos caracteres de entrada.
Dado 867953120como caso de prueba (último ejemplo), así es como funciona el script:
sum -ssalidas 473 1. Si no faltara un entero, la suma de verificación habría sido 525.
dc -e524?empuja 524 y luego la entrada de la tubería. La pila es: 1 473 524. La idea es restar la suma de verificación de 525, pero como la suma también produce 1, necesito trabajar con ella.
--P. Después de aplicar los dos sustracciones (524- (473-1)), la pila es: 52. Con 'P' imprimo el carácter con ese código ASCII: 4el dígito que falta.
function m(s)
character(len=10)::s,t
t='0123456789'
do j=1,10
k=0
do i=1,9
if(s(i:i)==t(j:j))k=1
end do
if(k==0)m=j-1
end do
end
No muy corto, me temo.
Sin golf:
integer function m(s)
implicit none
character(len=9)::s
character(len=10)::t
integer:: i, j, k
t='0123456789'
do j=1,10
k=0
do i=1,9
if (s(i:i) == t(j:j)) k=1
end do
if (k==0) m=j-1
end do
end function m
A, e# The range from 0 to 9: [0 1 2 3 4 5 6 7 8 9]
s e# Cast to a string: "0123456789"
q e# The input
- e# Remove all characters from the range that are in the input
e# Implicit output
ximplementación es bastante viejo y con errores, por lo que usted necesita ẹ.
Fatalize
En realidad, puede argumentar que algo así ¬∋ℕdebería funcionar en solo 3 caracteres, eso es lo que probé primero, pero hay varias razones por las que no funciona, y no creo que haya una forma plausible de cambiar Brachylog para que así sea.
Tener un ¬∋ℕtrabajo así ni siquiera es posible en Prolog, a menos que programe específicamente lo que quiere decir con no not in. ¬en Brachylog es equivalente a \+en Prolog, y su significado es el de "no demostrable bajo el supuesto de mundo cerrado", en lugar de "darme puntos de elección para todo lo que no verifica esto" (que es casi siempre un número infinito de cosas )
Fatalize
La única forma de hacerlo en Prolog sería "etiquetar" ℕpor adelantado, pero eso significaría jugar con el orden de evaluación de Brachylog basado en el contenido de los predicados. Sin embargo, ese es solo uno de los problemas que tiene; Hay un montón de otros.
3
Lisp común, 47 bytes
(lambda(s)(- 45(reduce'+ s :key'digit-char-p)))
Sin golf:
(lambda (s) (- 45 (reduce '+ s :key 'digit-char-p)))
Explicación:
(reduce '+ s :key 'digit-char-p)
Esto recorre los caracteres s, los convierte en dígitos y los agrega. Digit-char-p, convenientemente, devuelve el número de char como su valor "verdadero", para que pueda usarse como prueba o conversión.
(- 45 ...)
Restar 45 devuelve el dígito que faltaba en la entrada.
Utiliza el mismo tipo de método que esta respuesta mental .
Cree el valor -525 en la pila presionando 5, 2, concatenar, empujar 5, concatenar y negar.
Luego, obtenga repetidamente la entrada y agregue hasta que se llegue al final de la entrada.
Elimine la última entrada, niegue (haga positivo) el último resultado agregado, muestre el carácter y pare.
La razón para trabajar desde -525 en adelante es que la salida de caracteres se alcanza para cada iteración de entrada. Como el valor es negativo, no se emite nada hasta que se sale del bucle y el valor negativo se vuelve positivo.
La suma de los valores ASCII varía de 477 a 468, según el número que falta. Al restar esto de 7, obtenemos el rango -470 a -461. Al modificar este número por 10, obtenemos el rango 0 - 9, que luego podemos imprimir.
~+; ;# Sums the ASCII values of all characters to stdIn
~ # The # doesn't skip over the ~ because it's on the end of a line
~ Once EOF is hit, the ~ reverses the IP's direction
;# Jump the ; that was used before
--7 Subtract the sum from 7 (really just 0 - (sum - 7))
%a Mod it by 10
@. Print and exit
La razón por la que uso los valores ASCII en lugar de tomar la entrada entera es porque el &comando en Probar en línea se detiene en EOF (aunque debería revertir la IP). El ~funciona correctamente, sin embargo.
La suma de los valores ASCII de los 10 dígitos es 525. Al restar la suma de los dígitos dados de 525, obtenemos el valor ASCII del carácter faltante.
#v~+ Sums the ASCII values of all characters on stdIn
Moves to the next line when this is done
>'i5* Pushes 525 (105 * 5)
-- Subtracts the sum from 525
@ , Prints and exits
Toma entrada $n, construye un rango 0..9(es decir, 0, 1, 2 ... 9), luego usa una Where-Objectcláusula (the |?{...}) para extraer el número que hace regex -notmatch. Eso queda en la tubería, la salida es implícita.
Me gusta porque puedes decirlo en voz alta. "" HISK ", gritó, mientras agitaba su varita sobre el sombrero de copa y un pequeño conejo blanco apareció en una nube de humo".
Respuestas:
Python 2 ,
1816 bytes+ belleza gracias a @Sarge Borsch
Pruébalo en línea!
99066**2
es solo una forma más corta de generar una cadena que contiene 0 ~ 9fuente
764**4
puede guardar dos bytes.764**4
encuentra5
,8
y9
763**4
=338920744561
Python , 22 bytes
Pruébalo en línea!
Una solución aritmética. Interpreta la cadena de entrada como hexadecimal, la niega y toma el resultado módulo 15.
fuente
APL (Dyalog) , 4 bytes
Función derivada
⎕D
D igits∘
(vincula un argumento izquierdo a la siguiente función diádica para crear una función monádica)~
excepto [el argumento]Pruébalo en línea!
Tren de funciones
⎕D
D igits~
excepto⊢
el argumento correctoPruébalo en línea!
Programa explícito
⎕D
D igits~
excepto⍞
entrada de caracteresPruébalo en línea!
fuente
Brain-Flak ,
483836 + 3 = 39 bytes¡10 bytes guardados gracias a DJMcMayhem!
Pruébalo en línea!
Explicación
La suma de todos los dígitos en Ascii es 525. Este programa resume la entrada y la resta de 525 para obtener el dígito faltante.
Empujará 525. Esto aprovecha el hecho de que sabemos que habrá 9 elementos de entrada para empezar. Esto significa que se
[]
evalúa a 9, lo que nos permite llegar rápidamente a grandes cantidades como 525.A continuación tenemos el bit:
que resumirá las entradas y las restará del total.
fuente
negative(sum(input()))
al final, puede abusar de la altura de la pila nilad para empujar 525 más fácilmente.(([][][]()()()){()()({}[()])}{}[{{}}])
debería ahorrarle 10 bytesHaskell ,
2423 bytesPruébalo en línea! Uso:
(477-).sum.map fromEnum $ "123456890"
. 477 es la suma de los códigos de caracteres de los dígitos del 1 al 9, excluyendo 0. Esta función anónima calcula 477 menos la suma de todos los códigos de caracteres de dígitos para encontrar el que falta.Convertir los dígitos de caracteres en caracteres es un byte más largo:
Pruébalo en línea!
fuente
Jalea , 3 bytes
Simplemente filtra (
ḟ
) la cadena de entrada de "0123456789" (ØD
).Pruébalo en línea!
fuente
ḟ
.Ø
=⎕
,D
=D
,ḟ
=~
, como en⎕D~'867953120'
.Rubí, 14
Suma los códigos ascii y resta de 48 * 9 + 45
Usar así
fuente
JavaScript (ES6), 26
Editar 1 byte guardar thx @Neil, con un truco mucho más inteligente
Xoring todos los valores del 1 al 9 da 1. Xor 1 una vez más y el resultado es 0. Entonces, si falta un valor único, el resultado será el valor faltante.
Prueba
fuente
s=>eval([1,...s].join`^`)
Guarda un byte.Retina ,
27 2119 bytes-6 Gracias a Basic Sunset
-2 Gracias a Martin Ender
Pruébalo en línea!
Reemplace cada dígito con esa cantidad de
_
sy 51
s:Elimine todos los
_
sy a1
para cada uno:Cuente el número de
1
s restantes:fuente
.
.^
5
^.
$*9¶
.
$*_
+`_¶_
¶
_
_
a1
para guardar un byte.)05AB1E , 6 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
31292822 bytesPuerto de la respuesta de Python de @ xnor, excepto que JavaScript solo tiene un operador restante en lugar de un operador de módulo, por lo que no puedo hacerlo en un solo paso. Editar: Guardado 6 bytes gracias a @Arnauld.
fuente
s=>[...s].map(c=>r-=c,r=45)|r
;-)reduce
. +1 de todos modoss[0]!='0'
, pero ya hay una respuesta que usaeval
.s=>(15-`0x${s}`%15)%15
?Brainfuck,
1715 bytesPruébalo aquí . Esta solución funciona solo en Brainfuck estándar (celdas de 8 bits), ya que depende de la envoltura.
Es un día raro cuando Brainfuck puede competir, ¡pero este desafío se alineó bastante bien con la especificación BF!
En lugar de desglosar esta respuesta, me gustaría revisar las iteraciones que hice, porque creo que sería más comprensible (y más interesante).
Nota: esta solución está inspirada en gran medida por la respuesta Brain-Flak de Wheat Wizard .
Explicación
Paso 1, 26 bytes
En su respuesta, Wheat Wizard señaló que la suma de los valores ASCII de 0-9 suma a 525. Y como Brainfuck estándar solo tiene una noción de [0,255], esto hace que el valor sea 525% 256 = 13 . Es decir, restando los valores ASCII de la entrada de 13 le da el dígito faltante.
La primera versión de este programa fue:
1. Poner 13 en la primera celda
2. Tomar entradas en la segunda celda
3. Restar la segunda celda de la primera celda
4. Saltar a 2 si quedan entradas
5. Imprimir la primera celda
Y aquí está el código para la solución simple:
Paso 2, 19 bytes
Como se señaló en su respuesta, dado que sabemos que la entrada tendrá exactamente la longitud 9, podemos usar ese valor como una constante y eliminar esa larga cadena de + al principio.
Tampoco importa en qué momento agreguemos 13 (¡gracias, propiedad conmutativa!), Por lo que lo mezclaremos con los pasos de resta e impresión.
Esta fue mi respuesta original a este problema, pero podemos hacerlo mejor.
Paso 3, 17 bytes
Curiosamente, la respuesta anterior funciona incluso si comenzamos con un + en lugar de un,
Brainfuck requería algo en una celda para comenzar un ciclo. Ingenuamente agregamos ese 4 extra al final, cuando podría haber ido a otros lugares.
Con algunos trucos de bucle totalmente intencionales (léase: prueba y error), comenzar el programa con un - lleva a dos resultados interesantes:
1 + 10 + 2 = 13, y terminamos con la respuesta original.
Mirando hacia atrás, esto es probablemente una crítica excesiva para un programa Brainfuck tan simple.
Paso 4, 15 bytes
Después de pensar un poco más en esta solución, pude cortar 2 bytes.
Quería aclarar algo sobre el paso anterior:
el signo negativo para ingresar al bucle efectivamente agrega 1, pero lo que en realidad está haciendo es restar 255 de la segunda celda (lo que resulta en 1).
Es obvio en retrospectiva, pero restar 1 de la primera celda es lo mismo que sumar 1 a la segunda celda (porque todo en la primera celda se resta de la segunda celda).
Pude eliminar el "> + <" agregando un "-" al comienzo del primer bucle. Tiene que ir allí, y no donde estaba el "> + <", porque de lo contrario el programa se repetirá infinitamente.
fuente
Octava , 22 bytes
Pruébalo en línea!
fuente
Mathematica, 25 bytes
Función pura que toma una cadena como entrada y devuelve un entero. Mathematica tiene nombres de comando largos y es reacio a convertir entre cadenas y enteros, lo que lo hace particularmente malo en este desafío. Lo mejor que pude encontrar fue el algoritmo de la respuesta Ruby de Level River St , que realiza un cálculo basado en el total de los códigos ASCII de la cadena de entrada; en Mathematica, esto usa solo un nombre de comando largo.
fuente
PHP, 27
usa el truco de la respuesta de Rod para generar una cadena que contiene todos los dígitos y luego elimina todos los dígitos excepto el que falta.
PHP, 41
Este usa xor porque aún no lo he visto.
fuente
32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
Bash + coreutils, 19 bytes
Encontré una solución bash
más corta, que utiliza un enfoque interesante de suma de comprobación:Pruébalo en línea!
Explicación:
El
sum
comando imprime una suma de verificación y un conteo de bloques. No conozco muchos detalles, pero el uso de la opción-s
(algoritmo del Sistema V) hará que la suma de verificación sea igual a la suma ASCII de cada código de caracteres de entrada. Como tal, la suma de comprobación permanece constante cuando cambia el orden de los mismos caracteres de entrada.Dado
867953120
como caso de prueba (último ejemplo), así es como funciona el script:sum -s
salidas473 1
. Si no faltara un entero, la suma de verificación habría sido 525.dc -e524?
empuja 524 y luego la entrada de la tubería. La pila es:1 473 524
. La idea es restar la suma de verificación de 525, pero como la suma también produce 1, necesito trabajar con ella.--P
. Después de aplicar los dos sustracciones (524- (473-1)), la pila es:52
. Con 'P' imprimo el carácter con ese código ASCII:4
el dígito que falta.fuente
Fortran 95,
146128bytesNo muy corto, me temo.
Sin golf:
fuente
CJam , 5 bytes
Pruébalo en línea!
fuente
GNU sed , 36 bytes
Incluye +1 para
-r
Pruébalo en línea!
fuente
Brachylog (2), 5 bytes
Pruébalo en línea!
Podría decirse que debería ser más corto (todavía estoy confundido sobre por qué
ẹ
es necesario), pero esto es lo mejor que puedo hacer.Explicación
fuente
x
implementación es bastante viejo y con errores, por lo que usted necesitaẹ
.¬∋ℕ
debería funcionar en solo 3 caracteres, eso es lo que probé primero, pero hay varias razones por las que no funciona, y no creo que haya una forma plausible de cambiar Brachylog para que así sea.¬∋ℕ
trabajo así ni siquiera es posible en Prolog, a menos que programe específicamente lo que quiere decir con nonot in
.¬
en Brachylog es equivalente a\+
en Prolog, y su significado es el de "no demostrable bajo el supuesto de mundo cerrado", en lugar de "darme puntos de elección para todo lo que no verifica esto" (que es casi siempre un número infinito de cosas )ℕ
por adelantado, pero eso significaría jugar con el orden de evaluación de Brachylog basado en el contenido de los predicados. Sin embargo, ese es solo uno de los problemas que tiene; Hay un montón de otros.Lisp común, 47 bytes
Sin golf:
Explicación:
Esto recorre los caracteres
s
, los convierte en dígitos y los agrega. Digit-char-p, convenientemente, devuelve el número de char como su valor "verdadero", para que pueda usarse como prueba o conversión.Restar 45 devuelve el dígito que faltaba en la entrada.
fuente
Cubix , 18 bytes
Expandido
Pruébalo aquí
Utiliza el mismo tipo de método que esta respuesta mental .
Cree el valor -525 en la pila presionando 5, 2, concatenar, empujar 5, concatenar y negar.
Luego, obtenga repetidamente la entrada y agregue hasta que se llegue al final de la entrada.
Elimine la última entrada, niegue (haga positivo) el último resultado agregado, muestre el carácter y pare.
La razón para trabajar desde -525 en adelante es que la salida de caracteres se alcanza para cada iteración de entrada. Como el valor es negativo, no se emite nada hasta que se sale del bucle y el valor negativo se vuelve positivo.
fuente
PHP, 37 bytes
fuente
Bash (+ utilidades),
22, 19 bytesseq
lugar de expansión de llaves, -3 bytes (Thx @Riley!)Prueba
¡Pruébelo en línea!
fuente
$1
sería más obvio ...seq
lugar deecho
:seq 0 9|tr -d \\n$1
Hojas de cálculo de Google,
3933 bytesCódigo:
Guardado 6 bytes gracias a Steve Kass.
Código anterior:
Resultado:
fuente
=REGEXEXTRACT(0&49^9,"[^"&A1&"]")
También es una solución válida, dada una lógica similar. Respuesta actualizadaBefunge 98,
1412 bytesAhorré 1 byte moviendo el programa a 1 línea y 1 byte haciendo mejores matemáticas
Pruébalo en línea!
Explicación
La suma de los valores ASCII varía de 477 a 468, según el número que falta. Al restar esto de 7, obtenemos el rango -470 a -461. Al modificar este número por 10, obtenemos el rango 0 - 9, que luego podemos imprimir.
La razón por la que uso los valores ASCII en lugar de tomar la entrada entera es porque el
&
comando en Probar en línea se detiene en EOF (aunque debería revertir la IP). El~
funciona correctamente, sin embargo.Programa anterior , 14 bytes
La suma de los valores ASCII de los 10 dígitos es 525. Al restar la suma de los dígitos dados de 525, obtenemos el valor ASCII del carácter faltante.
fuente
PowerShell , 30 bytes
Pruébalo en línea!
Toma entrada
$n
, construye un rango0..9
(es decir,0, 1, 2 ... 9
), luego usa unaWhere-Object
cláusula (the|?{...}
) para extraer el número que hace regex-notmatch
. Eso queda en la tubería, la salida es implícita.fuente
Röda , 28 bytes
Pruébalo en línea!
fuente
Pyth, 5 bytes
¡intentalo!
explicación
"-jUT" también funciona, pero produce nuevas líneas para cada int.
fuente
05AB1E , 5 bytes
Pruébalo en línea!
Explicación
fuente