Saltar al contenido

Encuentre las coordenadas X, Y, Z del índice

La guía o código que hallarás en este artículo es la resolución más rápida y válida que hallamos a tu duda o dilema.

Solución:

pitón 3, 150 140 bytes

def f(n):
 a=b=x=y=z=0
 for i in range(n):
  a=x-~xa
  z*=a|b
 return x,y,z

¡Pruébelo en línea!

Posee $O(n)$ complejidad. El pie de página de TIO imprime los primeros 720 valores en aproximadamente 0,5 segundos.

¡Gracias a @ElPedro y @PrincePolka por ahorrar 5 bytes cada uno!

Jalea, 31 bytes

5,1ṁ9ĖŒṙṚḊḊḊ$Ƭz0ZUṬ€€ỊŒṪ’ṙÞ1ị@‘

Un enlace monádico que acepta un número entero en ps[0,719]ps que produce una lista de tres enteros ps[X, Y, Z]ps.

¡Pruébelo en línea!

O vea el conjunto de pruebas (que se completa en alrededor de 12 a 20 segundos en TIO)

¿Cómo?

Construye una tabla de búsqueda e indexa en ella:

5,1ṁ9ĖŒṙṚḊḊḊ$Ƭz0ZUṬ€€ỊŒṪ’ṙÞ1ị@‘ - Link: integer, n
5,1                             - pair literal = [5,1]
   ṁ9                           - mould like 9 = [5,1,5,1,5,1,5,1,5]
     Ė                          - enumerate = [[1,5],[2,1],[3,5],[4,1],[5,5],[6,1],[7,5],[8,1],[9,5]]
      Œṙ                        - run-length-decode = [1,1,1,1,1,2,3,...,7,7,7,7,7,8,9,9,9,9,9]
        Ṛ                       - reverse = [9,9,9,9,9,8,7,7,7,7,7,...,3,2,1,1,1,1,1]
         Ḋ                      - dequeue = [9,9,9,9,8,7,7,7,7,7,...,3,2,1,1,1,1,1]
             Ƭ                  - collect until a fixed-point:
            $                   -   last two links as a monad:
          Ḋ                     -     dequeue
           Ḋ                    -     dequeue
                                - } = [[9,9,9,9,8,7,7,7,7,7,...,3,2,1,1,1,1,1],[9,9,8,7,...],[8,7,...],...,[1,1],[]]
              z0                - transpose with filler zero
                Z               - transpose
                 U              - reverse each list
                  Ṭ€€           - un-truth each int (e.g. 5 -> [0,0,0,0,1])
                     Ị          - insignificant? (abs(x)<=1) (e.g. [0,0,0,0,1]->[1,1,1,1,1])
                      ŒṪ        - truthy multi-dimensional 1-indexed indices
                        ’       - decrement (i.e. all the [X,Y,Z] values)
                          Þ     - sort by:
                         ṙ 1    -   the list value rotated left by one (i.e. by [Y,Z,X])
                              ‘ - increment (n) (since Jelly is 1-indexed)
                             @  - with swapped arguments:
                            ị   -   index into

JavaScript, 93 85 bytes

Un puerto de la solución Python de Nick.

n=>(g=x=>n--?g(x>1n?++x:z

¡Pruébelo en línea!

Se guardaron 8 bytes gracias a la sugerencia de Arnauld de usar BigInts, además de un par de otros ajustes.

Te invitamos a añadir valor a nuestro contenido participando con tu experiencia en las aclaraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *