La secuencia de van der Corput es uno de los ejemplos más simples de secuencia de baja discrepancia . Su n
enésimo término es justo 0.(n written in base 10 and mirrored)
, por lo que sus primeros términos son:
0.1
, 0.2
, 0.3
, 0.4
, 0.5
, 0.6
, 0.7
, 0.8
, 0.9
,
0.01
, 0.11
, 0.21
, 0.31
, 0.41
, 0.51
, 0.61
, 0.71
, 0.81
, 0.91
,
0.02
, 0.12
, 0.22
, 0.32
, 0.42
, 0.52
, 0.62
, 0.72
, 0.82
, 0.92
, ...
El reto
Escriba un programa o una función en cualquier lenguaje de programación que tome como entrada un entero positivo n
menor que 10^6
y devuelva o imprima los primeros n
términos de la secuencia de van der Corput. El formato de salida puede ser una lista de números de coma flotante, una lista de cadenas del formulario 0.digits
o una cadena única donde los términos están separados por comas y / o espacios en blanco, líneas nuevas.
Las lagunas estándar están prohibidas. El código fuente más corto gana.
Oracle SQL 11.2,
646258 bytesVersión antigua
Concatenar '' a un número lo convierte en una cadena. Es 2 bytes más corto que usar TRIM (), que es más corto que TO_CHAR ().
Dado que concatenar una cadena a un NÚMERO da como resultado una cadena, es posible usar esa cadena para administrar el '0'. parte del resultado.
fuente
CJam,
1411 bytesGracias a Sp3000 por guardar 3 bytes.
Pruébalo aquí.
Explicación
fuente
Perl 6,
242220 bytesGracias Aleks-Daniel Jakimenko-A. para otros dos bytes más
versión antigua
EDITAR: Gracias raiph por 2 bytes adicionales
uso
fuente
{("0."~.flip for ^$_)}
ahorra 2 bytesMathematica, 40 bytes
Caso de prueba
fuente
Pyth, 8 bytes
Pruébalo en línea.
Esto es realmente solo una combinación de esto y esta respuesta. Por lo tanto, lo estoy haciendo un wiki comunitario
fuente
Pyth, 11 bytes
Pruébalo aquí!
Explicación
fuente
Pyth - 10 bytes
Pruébelo en línea aquí .
fuente
VSQ...
JavaScript (ES6), 58
Una función anónima que devuelve una cadena con valores separados por comas
PRUEBA
fuente
MATL , 10 bytes
Pruébalo en línea!
fuente
Haskell,
36, 27 bytesDos bytes guardados por nimi y 7 adicionales por Lynn.
fuente
f n=reverse.show<$>[1.0..n]
Brachylog , 23 bytes
Esto toma un número como entrada y envía el resultado a STDOUT, separado por espacios.
Bastante sencillo. Desafortunadamente, tenemos que concatenar el número con una cadena vacía para convertir este número en una cadena (
:""rc
), porque todavía no hay un predicado de conversión incorporado.La conversión a cadena es necesaria, porque si invertimos los dígitos del número, los ceros iniciales (por ejemplo, se
10
convierten01
) se perderían.fuente
PowerShell, 52 bytes
Un poco más de lo que me gustaría, pero usa un par de trucos geniales.
El
while
bucle es obvio, pero el condicional es un poco complicado: tenemos$a
(que comienza como$null
cuando se hace referencia por primera vez) y luego restamos nuestro número de entrada$args[0]
. En PowerShell, las operaciones matemáticas en$null
tratarlo como cero, por lo que para la entrada,20
por ejemplo, esto dará como resultado-20
. Como cualquier número distinto de cero es$true
, el bucle condicional estará$true
justo hasta que sea$a
igual a nuestro número de entrada (en ese punto, la resta será igual0
o$false
). El truco proviene del incremento posterior++
, que no se ejecuta hasta después de que se calcula la resta, por lo que el manejo de la entrada de1
saldrá correctamente0.1
y luego detendrá el ciclo en la próxima iteración.Cada vez en el bucle, solo creamos un literal de cadena que se deja en la tubería y se genera en consecuencia. Construimos esto a partir de
"0."
concatenados con el resultado del-join
operador unario que ha actuado en la matriz de caracteres creada al llevar la cadena"$a"
hacia atrás (indexando a través del rango"$a".length..0
).Ejecuciones de prueba
fuente
Bash, 36 bytes
Toma un número como argumento de línea de comando y genera cada término en una línea separada. Por ejemplo:
fuente
seq -f%g.0 $1|rev
.seq
podía hacer una salida formateada.Japt, 12 bytes
¡Pruébalo en línea!
Cómo funciona
fuente
cera de abejas ,
5753 bytesAl trabajar en el problema de salida de dígitos binarios para rosettacode, noté que podía usar el mismo algoritmo de división corta para la secuencia de van der Corput, solo usando la división y el módulo por 10 en lugar de 2. La salida se invierte en ambos casos.
Golfed por 4 bytes, reflejando el código:
Impresión bonita hexagonal, para una orientación más fácil:
Explicación de un ciclo a través del programa, utilizando el código original:
Ejemplo:
fuente
R, 59 bytes
explicación
example(strsplit)
crea la funciónstrReverse
(entonces debería ser obvio)Usando
IRanges::reverse
, esto podría ser golfizado a 47 bytesfuente
Python 3, 47 bytes
una solución más corta con Python 2
Caso de prueba
fuente
f=
no es necesaria, por lo que tiene una longitud de 47 bytes.n-1
términos.lambda n:['0.'+`i+1`[::-1]for i in range(n)]
es más corto si usa Python 2. Además, no debe decir "Python 3.5" a menos que requiera 3.5, lo cual no es así. Esta versión requiere Python 2.𝔼𝕊𝕄𝕚𝕟, 12 caracteres / 15 bytes
Try it here (Firefox only).
Está bien.
Explicación
⩤⁽1ï⒨
crea un rango[1,ï]
para mapear,ß)
convierte el elemento de mapa (número) en una cadena,Ė⍞.0
concatena.0
hasta el final eᴙ
invierte toda la cadena.fuente
Python 2, 54 bytes
Explicación:
Iterar a través del conjunto
[1,input)
y añade el revirtiói
a.
.Todavía se puede jugar más al golf.
fuente
`i`
lugar destr(i)
. Además, creo que necesita imprimir el cero inicial.PHP,
4541 bytesToma el argumento de entrada de CLI. Corre así:
fuente
Retina, 39 bytes
Toma entrada en unario.
Pruébelo en línea aquí.
fuente
Gema, 45 personajes
Ejecución de muestra:
fuente
Julia ,
50383331 bytesFui por un formato de salida diferente para acortar el código en 12 bytes. La función devuelve una matriz de cadenas ahora. Acortado por 5 bytes más. Gracias a Alex A. por recordarme la interpolación de cadenas y usar una función anónima (deshacerse de 2 bytes más).
o alternativamente
Prueba
fuente
n->["0."reverse("$i")for i=1:n]
map(n->["0."reverse("$i")for i=1:n],3)
(para n = 3) para producir cualquier salida? Eso lo haría (al menos) tan largo como mi solución.Python 2, 40 bytes
Ejemplo:
Resolución algebraica:
fuente
jq 1.5,
4035 caracteres(Código de 34 caracteres + opción de línea de comando de 1 carácter).
Ejecución de muestra:
Prueba en línea (
-r
no se admite el paso por la URL; compruebe usted mismo la salida sin formato).Lo mismo con enlaces a la documentación:
Como una alternativa más legible, lo anterior también podría escribirse así ( en línea ):
fuente
"\(.+1).0"/""
funciona?\(…)
y una división/
, que en caso de cadenas se divide.BBC BASIC,
898887 bytesAbreviaturas utilizadas para acortar las cosas tanto como sea posible. Compatible con Brandy Basic y BASIC 2 en la máquina original.
Para los BBC BASIC modernos, también puede dejar fuera de los números de línea para guardar dos bytes más.
fuente
Dyalog APL , 12 bytes
Pruébalo en línea!
Directo: la
{
cadena de función'0.'
antes de,
la⌽
representación⍕
de cadena invertida del argumento⍵
a la función}
para cada uno¨
de los números del 1 al n⍳
.fuente
JS, 66
La salida es la matriz llamada "o"
fuente
Groovy, 36 personajes
Ejecución de muestra:
fuente