Codice sinistra centro destra (LCR) golf


10

A una festa, mi è stato presentato il gioco LCR. Ora non è un grande gioco in quanto non c'è abilità ma solo possibilità casuali. Ma mi ha fatto pensare, potrei codificarlo, e ho fatto un rapido programma in R per modellare il gioco.

Le regole del gioco sono state modificate da Wikipedia in base al modo in cui abbiamo giocato:

Ogni giocatore riceve almeno 3 gettoni. I giocatori lo prendono a turno per lanciare tre dadi a sei facce, ognuno dei quali è contrassegnato da "L", "C", "R" su un lato e un singolo punto sui tre lati rimanenti. Per ogni "L" o "R" lanciata, il giocatore deve passare una fiche al giocatore alla sua sinistra o destra, rispettivamente. Una "C" indica un chip al centro (piatto). Un punto non ha alcun effetto.

Se un giocatore ha meno di tre fiches rimaste, è ancora in gioco ma il suo numero di fiches è il numero di dadi che lancia nel suo turno, piuttosto che tirare tutte e tre. Quando un giocatore ha zero gettoni, passa i dadi nel proprio turno, ma può ricevere gettoni dagli altri e fare il turno successivo di conseguenza. Il vincitore è l'ultimo giocatore a mettere le fiche al centro.

Contest: scrivi un programma nella tua lingua preferita che prende input per il numero di giocatori e il numero di gettoni iniziali e simula una partita di LCR, mostrando lo stato della partita dopo che ogni giocatore ha lanciato.

Ad esempio, un gioco potrebbe essere prodotto come:

[[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],
[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],
[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],
[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]

ht: Jonathan Allan

L'output non deve assomigliare esattamente a questo, ma dovrebbe essere facile discernere il tiro di dadi, quante gettoni ha ciascun giocatore e quante gettoni ha il centro per ogni turno.

È il golf del codice, quindi vince il codice più corto.


3
"dovrebbe essere facile discernere il tiro di dado" - è implicito (quindi facile da discernere) dagli stati delle fiche, così come lo è il giocatore che ha lanciato, dato che è a turni. Direi che questo output di esempio ha tutto il necessario: [[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]- è così?
Jonathan Allan,

1
@JonathanAllan, che funziona per me.
CT Hall

1
@KevinCruijssen, buona domanda, immagino che permetterò in entrambi i modi.
CT Hall

1
@CTHall In quel caso ho modificato entrambe le mie risposte (Java e 05AB1E) e incluse sia con che senza. :)
Kevin Cruijssen,

1
Voglio quasi farlo su Runic dove ogni puntatore di istruzione agisce come un determinato giocatore. Non sono sicuro di poterlo fare (anche ignorando il numero di giocatori inseriti), ma sarebbe bello se potessi.
Draco18s non si fida più di SE

Risposte:


4

Emacs Lisp , 279 byte

(defmacro n(i)`(incf(nth ,i c)))
(defun f(p s)(g(let((a'(0)))(dotimes(i p)(push s a))(princ a))0 p))
(defun g(c v p)(dotimes(i(min(nth v c)3))(decf(nth v c))(case(random 6)(0(n(mod(1- v)p)))(1(n(mod(1+ v)p)))(2(n p))(t(n v))))(princ c)(or(eq(-sum c)(nth p c))(g c(mod(1+ v)p)p)))

Utilizzare questa funzione come (f 4 3).

Versione leggibile meglio:

(defmacro n (i) `(incf (nth ,i c)))

(defun f(p s)
  (g
   (let ((a '(0)))
     (dotimes (i p)
       (push s a))
     (princ a))
   0
   p))

(defun g (c v p)
  (dotimes (i (min (nth v c) 3))
    (decf (nth v c))
    (case (random 6)
      (0 (n (mod (1- v) p)))
      (1 (n (mod (1+ v) p)))
      (2 (n p))
      (t (n v))))
    (princ c)
    (or (eq (-sum c) (nth p c))
    (g c (mod (1+ v) p) p)))

Esempio di output:

(3 3 3 3 0)(1 4 3 4 0)(2 2 4 4 0)(2 2 2 5 1)(4 2 2 3 1)(2 2 2 4 2)(2 1 3 4 2)(2 2 0 4 4)(2 2 0 4 4)(1 2 0 4 5)(2 1 0 4 5)(2 1 0 4 5)(2 1 1 3 5)(0 1 1 3 7)(1 0 1 3 7)(1 0 1 3 7)(1 0 3 1 7)(1 0 3 1 7)(1 0 3 1 7)(1 1 2 1 7)(1 1 3 0 7)(0 1 3 0 8)(1 0 3 0 8)(1 1 1 1 8)(1 1 2 0 8)(0 1 2 1 8)(0 1 2 1 8)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 0 10)(0 1 1 0 10)(0 0 1 0 11)(0 0 1 0 11)(0 0 1 0 11)(0 0 1 0 11)(0 0 1 0 11)(0 0 0 0 12)

3

Java 8, 281 277 275 274 253 byte

Versione che genera lo stesso stato quando un giocatore di turno ha 0 chip rimanenti:

p->n->{java.util.Arrays A=null;int c[]=new int[p],i=0,t,r,s=1,u,f=9;for(A.fill(c,n);s>0;f=0,System.out.print(A.toString(c)))for(t=c[++i%p],t=t>3?3:t;t-->f;r*=Math.random(),c[i%p]-=1-r/3,s=c[u=(i+r-1+p)%p]+=1-r&1-r/4,c[u]=s<0?0:s,s=A.stream(c).sum())r=6;}

Inizia con il terzo giocatore dell'array.

Provalo online.

Versione che salta i giocatori con 0 chip rimasti (274 byte):

p->n->{java.util.Arrays A=null;int c[]=new int[p],i=p,t,r,s=1,u,f=9;for(A.fill(c,n);s>0;f=0,System.out.print(A.toString(c))){for(t=c[i%p],t=t>3?3:t;t-->f;r*=Math.random(),c[i%p]-=1-r/3,s=c[u=(i+r-1+p)%p]+=1-r&1-r/4,c[u]=s<0?0:s)r=6;for(s=A.stream(c).sum();s>0&c[++i%p]<1;);}}

Inizia dal primo giocatore dell'array.

Provalo online.

-7 byte grazie a @ OlivierGrégoire .

Spiegazione (della seconda versione):

p->n->{                      // Method with two integer parameters and no return-type
  java.util.Arrays A=null;   //  Create a static Arrays-object to save bytes
  int c[]=new int[p],        //  Integer-array with chips of each player (0 by default)
      i=p,                   //  Index integer, starting at the amount of players
      t,                     //  Temp integer to roll 3 dice
      r,                     //  Temp integer for the dice-result
      s=1,u,                 //  Temp integers (and `s` is also the total-sum integer)
      f=9;                   //  Flag integer, starting at a single digit above 3
  for(A.fill(c,n);           //  Give each player in the array the chips
      s>0                    //  Loop as long as the total-sum is not 0 yet
      ;                      //    After every iteration:
       f=0,                  //     Set the flag to 0
       System.out.print(A.toString(c))){
                             //     Print the current state
    for(t=c[i%p],            //   Set `t` to the current player's chips
        t=t>3?3:t;           //   If this is larger than 3: set it to 3 instead
        t-->f                //   Loop that many times (1, 2, or 3)
                             //   (the flag is used to skip this loop the first iteration,
                             //   so we can print the initial state)
        ;                    //     After every iteration:
         r*=Math.random(),   //      Roll the dice in the range [0,5]
         c[i%p]-=r<3?        //      If the dice-roll is 0, 1 or 2:
                  1          //       Remove a chip from this player
                 :0,         //      Else: Leave the chip-amount the same
         s=c[u=(i+r-1+p)%p]  //      If the dice-roll is 0, go to the player left
                             //      If the dice-roll is 2, go to the player right
             +=1-r&1-r/4,    //       And add a chip to this player
         c[u]=s<0?0:s)       //      Change negative amount of chips to 0
      r=6;                   //    Reset the dice-roll to 6 so we can roll again
    for(s=A.stream(c).sum(); //   Calculate the total sum of the chips of the players
        s>0&                 //   If this sum is larger than 0:
         c[++i%p]<1;);}}     //    Determine the next player in line with at least 1 chip

1
Potrei lasciare il mio voto senza un (minuscolo) golf: D s=0;for(int C:c)s+=C;(21 byte) può essere sostituito da s=A.stream(c).sum();(20 byte)
Olivier Grégoire,

Inoltre, non sono sicuro se del tutto ok: c[i%p]-=r<3?1:0c[i%p]-=1-r/3. Ciò risparmierebbe 2 byte.
Olivier Grégoire,

1
@ OlivierGrégoire Ah, un modo intelligente di riutilizzare il Ada java.util.Arrays. : D E inserendolo nel loop per salvare sul punto e virgola sono -2 byte. Ed 1-r/3è davvero corretto ( vedi qui ). Grazie.
Kevin Cruijssen,

Bel trucco con il decremento del confronto loop. Potrei rubarlo.
Stackstuck,

1
Ignora il mio precedente commento eliminato: la mia tabella di verità era disattivata. Questo è quello fisso: s=c[u=(i+r-1+p)%p]+=1-r&1-r/4(salva 2 byte, rispetto a s=c[u=(i+r%2*2-1+p)%p]+=r<2?1:0)
Olivier Grégoire

2

Python 2 , 159 148 byte

from random import*
n,c=input()
g=[c]*n;i=0
while sum(g):exec"r=randrange(6);g[i]-=1;g[i-[0,1,~-n][max(0,r-3)]]+=r>0;"*min(3,g[i]);i=(i+1)%n;print g

Provalo online!

Stampa tutte le fiches dei giocatori dopo ogni lancio


Buon tentativo, ma il codice non mostra la quantità di chip al centro.
CT Hall

3
@CTHall I chip al centro sono sempre uguali a n*c - sum(players). Se ho bisogno di scriverlo esplicitamente, lo farò
TFeld

è vero. Lo permetterò.
CT Hall

2

Gelatina , 39 byte

+2 per correggere il comportamento di ripetizione ( ¡deve essere preceduto da un nilad così «3Ḣ$-> ⁸FḢ«3)

Se possiamo definire gli elenchi di output da ruotare per avere i chip appartenenti al giocatore che ha agito in precedenza a sinistra, possiamo eliminare quello più a destra 6 byte per 33 byte (tuttavia, a mio avviso, è un po 'strano leggerlo).

ẋµ’1¦‘.,2ŻX¤¦$¹Ø.X¤?⁸FḢ«3¤¡ṙ1µSпṙ"JC$$

Un collegamento diadico che accetta gettoni per giocatore a sinistra e numero di giocatori a destra che fornisce un elenco di conteggi dei gettoni dei giocatori all'inizio del gioco e dopo ogni turno (inclusi i turni in cui 0 gettoni impongono un passaggio) .

Provalo online!

Come?

Ogni giocatore a sua volta, fino a tre volte, a seconda del numero di gettoni, lancia una moneta. Quando un giocatore lancia la testa, non fa nulla, ma se lancia la croce, lancia un dado a tre facce perdendo una fiche a L, C o R. (Nota che 0 lancia quando un giocatore ha 0 fiche equivale a passare.)
Questo si ripete fino a quando la somma delle fiche dei giocatori è pari a 0.
L'implementazione ruota i giocatori lasciati di un punto ogni turno e quindi ruota gli stati risultanti di nuovo in modo che siano tutti allineati come se non lo fossero.

ẋµ’1¦‘.,2ŻX¤¦$¹Ø.X¤?⁸«3Ḣ¤¡ṙ1µSпṙ"JC$$ - Link: chipsPerPlayer, C; numberOfPlayers, P
ẋ                                      - repeat C P times (making a list of P Cs)
                              п       - collect up results in a list while...
                             S         - ...п condition: sum (while players have chips)
 µ                          µ          - ...п do: the monadic chain:
                         ¡             -   repeat...
                        ¤              -   ...¡ number of times: nilad and link(s) as a nilad:
                    ⁸                  -     chain's left argument (the chip list)
                     «3                -     minimum with three (vectorises)
                       Ḣ               -     head -- i.e. min(left-most player's chips, 3)
                   ?                   -   ...¡ action: if...
                  ¤                    -     ...? clause: nilad and link(s) as a nilad:
               Ø.                      -       the list [0,1]
                 X                     -       random choice (0 is falsey while 1 is truthy)
             $                         -     ...? then: last two links as a monad:
    ¦                                  -       sparsely apply...
   1                                   -       ...¦ to indices: one (the left-most)
  ’                                    -       ...¦ action: decrement (player lost a chip)
            ¦                          -       sparsely apply...
           ¤                           -       ...¦ to indices: nilad and link(s) as a nilad:
      .,2                              -         literal pair of literals .5 and two = [.5,2]
         Ż                             -         prepend a zero = [0,0.5,2]
          X                            -         random choice
                                       -         -- Note application to index .5 is a no-op
                                       -                 index 0 is the right-most entry (L) 
                                       -                 index 2 is the second entry (R) 
                          ṙ1           -   rotate the list left by one for the next п loop
                                     $ - last two links as a monad:
                                    $  -   last two links as a monad:
                                  J    -     range of length -- i.e. [1,2,3,...,turns+1]
                                   C   -     complement = 1-x        [0,-1,-2,...,-turns]
                                 "     -   zipped-appliction of:
                                ṙ      -     rotate left by
                                       -   -- i.e. rotate 1st left by 0, 2nd left by -1, ...)

Sono un po 'impressionato dal modo in cui le persone codificano in queste lingue che sembrano rumore di linea. :) Ma poi conosco solo un paio di lingue, quindi forse con più esperienza arriverà.
CT Hall

2
Puoi dare un'occhiata al tutorial sul wiki, è abbastanza buono. Una volta che avrò pubblicato la ripartizione del codice, spero che seguirai quello che ho fatto ...
Jonathan Allan,

... questo è un comportamento leggermente errato, però? Per specifica, devi tirare tutti e tre i dadi, non solo un lancio di moneta. A meno che la descrizione non sia errata e il codice vada bene.
Stackstuck,

@Stackstuck: la descrizione della descrizione è leggermente fuorviante, la moneta viene lanciata ogni volta; Lo riparerò - grazie. FWIW codice descrizione composizione è giusto - coin flip ramificazione, Ø.X¤?, è annidato all'interno del repeat-up-to-3-volte istruzione, ⁸«3Ḣ¤¡.
Jonathan Allan,

Ah ok. Sono contento di aver potuto aiutare.
Stackstuck,

1

C #, 356? +13? byte

Richiede using System;un totale di +13 byte al codice mostrato di seguito, se sono tenuto a contarlo. Altrimenti basta collegarlo in qualsiasi classe e chiamare L(players, starting chips);.

static int i,j,k,l;public static void L(int p,int s){var r=new Random();var x=new int[p];for(i=0;i<p;i++)x[i]=s;
for(i=0;i<s*p;){for(j=0;j<p;j++){for(l=0;l<x[j]&l<3;l++){k=r.Next(-1,5);if(k<2){if(k==0){x[j]--;i++;}else{x[(p+j+k)%p]++;x[j]--;}}}Console.Write(a(x)+i);}}}public static string a(int[] x){var n="|";for(l=0;l<x.Length;)n+=x[l++]+" ";
return n;}

Esempio di output per un gioco 2,2:

|1 3 0|2 2 0|1 3 0|1 3 0|0 4 0|0 3 1|0 3 1|2 1 1|1 2 1|1 2 1|0 3 1|0 3 1|0 3 1|1 1 2|1 1 2|1 1 2|0 2 2|1 1 2|0 1 3|1 0 3|0 1 3|0 1 3|0 1 3|1 0 3|1 0 3|1 0 3|0 1 3|1 0 3|0 1 3|0 0 4

Versione meno giocata a golf:

using System;
//class omitted.
static int i,j,k,l;
public static void LCR(int pl, int sc){
var r=new Random();
var state = new int[pl];
for(i=0;i<pl;i++)state[i]=sc;
for(i=0;i<sc*pl;){
    for(j=0;j<pl;j++){
        for(l=0;l<state[j] && l<3;l++){
            k=r.Next(-1,5);
            if(k<2){
                if(k==0){state[j]--;i++;}else{state[(pl+j+k)%pl]++;state[j]--;}
            }
        }
        Console.Write(a(state)+i);
    }
}
}
public static string a(int[] x){
    var n="|";
    for(l=0;l<x.Length;)n+=x[l++]+" ";
    return n;
}

Bene, questa è la mia prima risposta qui in assoluto. Per favore, non mangiarmi.
Stackstuck,

Ah, drat. Il mio comportamento di stampa dell'array è stato confuso con Java. Sarò ... tornato con una revisione.
Stackstuck,

Ok, è corretto, l'output dovrebbe sicuramente funzionare.
Stackstuck,

... oh no, c'è ancora un errore.
Stackstuck,

Le persone che dicono modulo quando il comportamento è in realtà il resto non dovrebbero ... non farlo. Ecco, sono sicuro al 90% che funzioni ora.
Stackstuck,

1

C # (compilatore interattivo Visual C #) , 201 199 byte

n=>m=>{var r=new Random();var j=Enumerable.Repeat(n,m).ToList();for(int i=0;j.Any(c=>c>0);i++,Print(j))for(int k=0,x=r.Next(6);k++<Math.Min(j[i%m],3);j[((x<1?-1:1)+i+m)%m]+=x<2?1:0,j[i%m]-=x<3?1:0);}

Provalo online!

startingChips=>playerNum=>{
//Instantiate a new random number generator
var rng = new Random();
//Create a list of chips
var players = Enumerable.Repeat(startingChips, playerNum ).ToList();
//Loop as long any player still has chips
for(int turnNum = 0;players.Any(c=>c>0);
//And print the result every iteration
i++,Print(j))
//Get a random number within the range of 0-5 and loop for...
for(int k = 0,randomNum = rng.Next(6);
//either 3 or the amount of chips we have, whichever is smaller
k++<Math.Min(players[turnNum % playerNum ],3);
//Increment either the right player if the random number is 1, else increment the right player if it is 0
players[((randomNum<1?-1:1)+ turnNum + playerNum ) % playerNum ]+=x<2?1:0,
//Decrement current player if the die roll is under 3
players[ turnNum % playerNum ]-=x<3?1:0);}

1

Carbone , 61 byte

≔⁰ηWΣθ«≔Eθ⭆⌊⟦κ׳⁼λη⟧‽⁶ιUMθ⁻⁺⁺κ№§ι⊕λ3№§ι⊖λ5LΦ§ιλ›μ2≔﹪⊕ηLθη⟦⪫θ,

Provalo online! Il collegamento è alla versione dettagliata del codice. Si alterna tra l'output dei tiri di dado e i gettoni rimasti (né il numero iniziale di gettoni né il numero di gettoni al centro sono inclusi nell'output). Spiegazione:

≔⁰η

Inizia con il primo giocatore.

WΣθ«

Ripeti fino a quando non rimangono più chip.

≔Eθ⭆⌊⟦κ׳⁼λη⟧‽⁶ι

Tira fino a tre dadi per il giocatore corrente. Questi dadi sono etichettati 0-5, dove 0-2 rappresentano il punto, 3 è passato a sinistra, 4 è al centro, 5 è a destra.

UMθ⁻⁺⁺κ№§ι⊕λ3№§ι⊖λ5LΦ§ιλ›μ2

Aggiungi il numero di gettoni che il giocatore a destra ha passato a sinistra e il numero di gettoni che il giocatore a sinistra ha passato a destra, ma sottrai il numero di gettoni che il giocatore stesso ha passato.

≔﹪⊕ηLθη

Passa al giocatore successivo.

⟦⪫θ,

Emette il nuovo numero di chip detenuti dai giocatori.

In realtà è più semplice per tutti tirare i dadi contemporaneamente, cosa che può essere fatta in 50 byte, inclusa la stampa dei tiri di dado e delle fiches rimaste:

WΣθ«≔Eθ⭆⌊⟦κ³⟧‽⁶ιUMθ⁻⁺⁺κ№§ι⊕λ3№§ι⊖λ5LΦ§ιλ›μ2⟦⪫ι,⪫θ,

Provalo online! Il collegamento è alla versione dettagliata del codice.


Non ne sono sicuro, ma non sembra che rappresenti il ​​numero di chip detenute dopo ciascun ruolo, non ogni round.
CT Hall,

@CTHall Oh, vuoi dire che ogni giocatore tira singolarmente e quindi il numero di chip viene aggiornato? Mi dispiace, l'ho trascurato. Aggiornerò la mia risposta non appena avrò il tempo.
Neil,

1

05AB1E (legacy) , 58 50 49 52 byte

Versione che genera lo stesso stato quando un giocatore di turno ha 0 chip rimasti ( 50 49 52 byte ):

и[=ÐO_#¾è3‚Ws\F5ÝΩ©3‹iε¾¹%NQ-}®≠iε®<¾+¹%NQ+}}}}D0›*¼

Provalo online.

Versione che salta i giocatori con 0 chip rimasti ( 58 57 60 byte ):

и[=DO_#[D¾èDĀ#\¼}3‚Ws\F5ÝΩ©3‹iε¾¹%NQ-}®≠iε®<¾+¹%NQ+}}}}D0›*¼

Provalo online.

Entrambi +3 byte usando la versione legacy, perché la nuova versione 05AB1E ha un bug strano. Dovrebbe funzionare con Ws\(push minimo senza ßpop-up ; swap; lista degli scarti) sostituito con (pop list e push minimo) e 0›(controlla se maggiore di 0) sostituito con d(controlla se non negativo / maggiore di o uguale a 0) nella nuova versione, ma per qualche motivo l'ordine dell'elenco viene modificato dopo il finale ¼! .. : S (e anche la nuova versione è estremamente lenta e scade dopo 60 secondi prima di terminare il risultato ..>.>)

Il primo input è la quantità di giocatori, il secondo input la quantità di gettoni per giocatore.

Spiegazione (della seconda versione):

и                    # Create a list with a size of the (first) implicit input,
                     # filled with the second (implicit) input
[                    # Start an infinite loop:
 =                   #  Print the list with trailing newline, without popping the list
 DO_#                #  If the total amount of chips is 0: stop the infinite loop
 [                   #  Start an inner infinite loop:
  D¾è                #   Get the chips of the I'th player (I is 0 by default)
     D               #   Duplicate this
      Ā#             #   If it is NOT 0: stop the inner infinite loop
        \            #   Remove the duplicated chips for the next iteration
         ¼           #   And increase I by 1
 }                   #  After the inner infinite loop:
 3Ws\               #  If the amount of chips is larger than 3: use 3 instead
      F              #  Loop that many times:
       5ÝΩ           #   Roll a random dice in the range [0,5]
       ©3i          #   If the dice-roll is 0, 1, or 2:
           ε¾¹%NQ-}  #    Remove a chip from the I'th player
           ®≠i       #    If the dice-roll is NOT 1:
              ε®<¾+  #     Go to the player left if 0; or right if 2
              ¹%NQ+} #     And increase that player's chips by 1
      }}}            #  Close both if-statements and the loop
         D0›*        #  Make any negative amount of chips 0
             ¼       #  Increase I by 1

Non sono sicuro che funzioni correttamente. Sembra che i giocatori possano guadagnare chips nel loro turno, cosa che non dovrebbe accadere.
CT Hall

@CTHall Sei sicuro? In quale delle quattro versioni di TIO hai visto questo? Ho controllato solo l'ultimo (versione legacy che salta i giocatori con 0 gettoni), ma l'unica volta che aumenta un giocatore è quando un altro giocatore è a turno. Ecco l'ultimo con l'aggiunta della linea di debug in modo da poter vedere quale giocatore (indicizzato 0) è a turno.
Kevin Cruijssen l'

1
Quelle legacy sembrano essere corrette, ma la non legalità sembra avere l'errore che ho citato.
CT Hall

Ah, ah, hai davvero ragione. Vedo una riga [2, 3, 3, 3]seguita da [2, 2, 2, 6]..: S Vedrò se riesco a trovare la causa e risolverla. In caso contrario, posso sempre eliminarlo e utilizzare solo l'eredità, poiché produce comunque molto di più .. La nuova versione è piuttosto lenta con loop complessi per qualche motivo ..>.>
Kevin Cruijssen

@CTutto sono stato in grado di individuare il problema, ma non sono riuscito a risolverlo. Per qualche motivo l'ordine dell'elenco viene modificato subito dopo aver aumentato il globale counter_variable. Ho provato a riprodurre il problema in un esempio più semplice, ma non ci riesco. Ha qualcosa a che fare con le istruzioni if ​​e le mappe nidificate all'interno del ciclo infinito, ma è decisamente strano .. Comunque, ho rimosso quella versione e ora rimane solo la versione legacy (e più veloce), che funziona come previsto.
Kevin Cruijssen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.