L'arte della programmazione informatica

Oct 19 2020

EDIT: So che non dovremmo modificare i nuovi requisiti dopo la prima pubblicazione, ma per quanto ne so questo requisito è implicito in tutte le domande qui:
Spiega la tua risposta! almeno un po '. Quindi un lettore occasionale ha la possibilità di seguire le tue riflessioni e apprezzare il tuo genio.

Eccone uno semplice ma spero divertente:

Riuscite a ricreare uno dei seguenti modelli?

Regole:

  1. Solo aritmetica intera

  2. Strettamente locale, cioè solo le coordinate x, y di un punto possono essere utilizzate per calcolare il suo colore

  3. Nessuna tabella di ricerca

  4. Nessuna forzatura bruta (ecco perché il tag no-computer è lì nel caso te lo stessi chiedendo), a parte questo puoi usare i computer come ritieni opportuno.

(5.) Più semplice è, meglio è

Appunti:


I modelli sono tutti periodici e utilizzano colori 0,1,2,3,4.
Non è necessario utilizzare esattamente gli stessi colori, andranno bene cinque colori qualsiasi.
Non ho deliberatamente inserito una versione testuale dei modelli perché non dovresti forzarla.
Sono ancora abbastanza nuovo nella creazione di puzzle, qualsiasi feedback è il benvenuto.

Un esempio con soluzione:


Possibile risposta $f(x,y) = \left [ \lfloor \frac x 3 \rfloor - \lceil \frac {y+2x+1} 6 \rceil - \lceil \frac {y+1} 6 \rceil \right ] \mod 5$

Risposte

5 GarethMcCaughan Oct 19 2020 at 20:26

Credo che il primo pattern sia (con (0,0) in alto a sinistra)

$$\Biggl\{\left\lfloor\frac{2x+3y-2}8\right\rfloor+\left\lfloor\frac{-3x-2y+3}8\right\rfloor \Biggr\} \mathop{\textrm{mod}}5.$$

E l'ultimo è (con (0,0) in alto a sinistra)

$$\Biggl\{x+y+m(x-y)-\left\lfloor\frac x4\right\rfloor\Biggl\}\mathop{\textrm{mod}}5$$

dove

$m(x)$ va $0, +1, 0, -1$ a seconda di $x$ mod 4. Ci sono molti modi per definire senza tabelle di ricerca $m$; per esempio$m(x)=(x \mathop{\textrm{mod}}2)\cdot(-1)^{\lfloor x/2\rfloor}$.

La domanda è stata aggiornata per includere una richiesta di "spiegare la tua risposta".

Non ho molte spiegazioni da offrire per il primo schema. Io solo

ho pensato che avrei dovuto provare cose della forma $\lfloor\textrm{linear}(x,y)\rfloor+\lfloor\textrm{linear}(x,y)\rfloor\pmod5$, con i coefficienti delle due cose lineari che coincidono in modo da dare al modello il giusto tipo di simmetria; la periodicità del pattern ha suggerito che probabilmente volevo 8 o 16 nei denominatori, un po 'di sperimentazione ha mostrato (come avrebbe dovuto essere ovvio fin dall'inizio) che la differenza tra i$x$ e $y$i coefficienti vengono visualizzati in quante "bande" ci sono da sud-ovest a nord-est, e quindi c'erano solo pochi casi per provare a vedere se davano il modello giusto. Dopo aver trovato qualcosa con il modello giusto ma un offset in$x$ e $y$, Ho sostituito $x,y$ con $x-\delta,y-\epsilon$ dove $\delta,\epsilon$era l'offset che dovevo produrre e semplificato. Fatto.

Posso dire qualcosa di più sul quarto.

Prima di tutto, l'ovvio schema di bande suggerisce che all'interno del mio "... mod 5" volevo un termine $\lfloor x/4\rfloor$. Il resto poi serviva per produrre un bel motivo periodico a "serpente". I serpenti corrono da sud-ovest a nord-est andando a destra, a destra, in alto, in alto, a destra, a destra, in alto, in alto, a destra, a destra, ecc. Se prendessimo solo i contorni di$x+y$allora avremmo semplici linee diagonali, che in realtà sono piuttosto simili a quelle dei serpenti; possiamo trasformare le linee diagonali in serpenti aggiungendo e sottraendo 1 in un insieme di posti accuratamente selezionato. Se aggiungi 1 tutto lungo una linea diagonale da nordovest a sud-est, spingi effettivamente tutti i contorni di un'unità in diagonale verso l'interno; se sottrai 1, spingerli effettivamente di un'unità in diagonale verso l'esterno. Fissando un po 'lo schema si vede che ciò che serve è che metà delle diagonali NW-SE rimangano come sono e l'altra metà si alternino tra essere spinte dentro e essere spinte fuori, il che significa che dobbiamo aggiungere quella funzione$m(x,y)$ prima di ridurre mod 5.

4 LukasRotter Oct 19 2020 at 17:34

(2 su 4)


$(0,0)$ è in basso a sinistra, non in alto a sinistra.

2 ° modello:

$f(x,y) = \left [ \left\lceil \frac {3x} 8 \right\rceil - \left\lfloor \frac {5x} 8 - \frac {y} 4 \right\rfloor \mod 5 - \left\lfloor -\frac {y} 8 \right\rfloor \mod 5 \right] \mod 5$

3 ° modello:

$f(x,y) = \left [ \left\lceil \frac {3x+3} 7 \right\rceil - \left\lfloor \frac {6x-y} 7 \right\rfloor - 7 \right] \mod 5$