Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-05-2009, 19:28   #1
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
[Contest 14?] Corsa delle macchine

Voglio proporre un contest un po' alternativo, nel senso che stavolta la speranza e' che diventi una gara tra algoritmi piu' che una mostra di microottimizzazioni.
La sfida si ispira alle corse di macchine che penso piu' di qualcuno avra' giocato con penna e foglio a quadri quand'era piccolo, anche se ho apportato qualche modifica per rendere (almeno in teoria) relativamente semplice l'implementazione della struttura di base. Il regolamento e' relativamente lungo, perche' ho cercato di essere il piu' rigoroso possibile, non escludo pero' bug :P

= Goal =

Muovere la vettura dalla griglia di partenza fino al traguardo
nel piu' breve tempo possibile

= Descrizione del mondo =

Il mondo e' costituito da una griglia rettangolare di celle
Ogni griglia puo' essere di uno tra i quattro seguenti tipi

Partenza: posizione dalla quale la vettura puo' partire
Asfalto: cella che puo' essere percorsa dall'auto
Erba: cella nella quale la macchina non puo' procedere, pena l'eliminazione
Traguardo: cella che l'auto deve raggiungere per concludere l'esecuzione


= Movimento della vettura =

Il tempo scorre in modo discreto. Ad ogni turno la vettura puo' decidere di variare
la propria velocita' ed aggiorna la propria posizione sulla griglia.
La vettura puo' controllare indipendentemente due velocita', quella lungo l'asse x
e quella lungo l'asse y. La velocita' e' espressa in caselle/turno, ed e' un valore
intero.
Se ad un dato istante la velocita' lungo un asse e' V, la velocita' lungo lo stesso
asse al turno successivo puo' essere uno tra i tre valori [V-1,V,V+1].

= Collisioni =
Le caselle di partenza, di arrivo e di asfalto sono considerate sgombre.
La casella d'erba NON e' sgombra.
La vettura puo' procedere solo su caselle sgombre.
Nel caso che uno spostamento che coinvolga diverse celle, tutte le
caselle per cui passa il segmento S che va da P1=(x1,y1) a P2=(x2,y2),
devono essere sgombre.
Il segmento parte dal centro della casella, per cui
in pratica per ogni casella (x,y) tale che
min(x1,x2) <= x <= max(x1,x2)
min(y1,y2) <= y <= max(y1,y2)
distanza( (x,y), S ) <= 1/2
tale casella deve essere sgombra

( distanza( (x,y) , S ) e' definita come
min_{ (x',y') \in S } max( abs(x-x'), abs(y-y') ),


= Condizione iniziale =
L'utente puo' scegliere di partire da una qualsiasi delle caselle di partenza,
con velocita' uguali a 0

= Condizione finale =
La corsa finisce quando in un dato istante la macchina passa attraverso una delle
caselle del traguardo, ovvero quando viene fatta una mossa _valida_ tra (x1,y1)
a (x2,y2) per la quale esiste una casella di traguardo (xt,yt) tale che
distanza( (xt,yt), S ) <= 1/2

= Obiettivo =
Data una certa configurazione, trovare la sequenza di movimenti della macchina che permettano
di ottenere una traiettoria completa tra partenza e arrivo nel minore numero di
passi possibile.


= Input =
In input da console viene fornita la mappa della pista nel seguente formato:
La prima riga contiene due interi separati da uno spazio
rappresentanti rispettivamente il numero
di righe <nrighe> e il numero di colonne <ncolonne> della mappa
Seguono <nrighe> righe ognuna composta di <ncolonne> caratteri e terminata
da un ritorno a capo,
Ogni carattere avra' uno dei seguenti significati
- (meno) : partenza
= (uguale) : arrivo
. (punto) : asfalto
# (cancelletto) : erba (ostacolo)

Esempio di input
Codice:
24 40
########################################
##########################.....#########
##########################.....#########
###############....#######-----#########
##############..........#......#########
##############....#...........##########
##############....#####......###########
###############.......##################
#######.......###......#################
######..........###.....################
#####.....###...#####....###############
#####....####....#####....##############
####.....####....######...##############
####....#####....######...##############
####....#####....#####....##############
####....######...####.....##############
####.....#####...###.....###############
####.....#####....#.....################
####.....######........#################
####=====#######....####################
########################################
########################################
########################################
########################################
= Output =

L'output del programma dovra' essere nel seguente formato:
ogni riga deve contenere le coordinate <x> e <y> dell'auto ad ogni istante
successivo. Conseguentemente, se il percorso consta di n passi, l'output
sara' composto di n+1 righe



Per fare qualche prova per ora potete usare la pista sopra disegnata, provvedero' ad proporne di molto piu' corpose.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 19:29   #2
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Allego un esempio di percorso valido, non necessariamente il migliore, per la pista segnata sopra.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 19:31   #3
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Ovviamente avevo dimenticato l'allegato
Immagini allegate
File Type: png track.png (6.4 KB, 72 visite)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 19:34   #4
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Infine, per chi vuole divertirsi a creare tracciati, allego un paio di script python che permettono di convertire una immagine bitmap in tracciato.
Nell'immagine di partenza il colore bianco viene convertito in partenza, il nero in traguardo, il grigio (128,128,128) in asfalto, e tutto il resto in erba.
L'estensione va rinominata in .py
Allegati
File Type: txt img2track.txt (1019 Bytes, 29 visite)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 22:10   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Iscritto.
Ho un'idea. Mi manca un pezzo ancora pero'.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 23:31   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Ho dei dubbi sulla validazione.

Se ho un pezzo
Codice:
###.
###.
##..
##..
E volessi passare dal primo . in basso a sinistra a quello in alto a destra, e' una mossa regolare?( Passo esattamente per il centro di 4 pixel adiacenti, dei quali uno irregolare)
E altri esempi simili. Come interpretare la regola correttamente?

Altra domanda. Se DOPO aver passato il traguardo, sempre nella stessa mossa finale l'auto mi si schianta va bene lo stesso?
Insomma una vittoria postuma...


PS: Se mi lasciate da solo spezzo le braccine a tutti...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 17-05-2009 alle 00:00.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 23:59   #7
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ho dei dubbi sulla validazione.

Se ho un pezzo
Codice:
###.
###.
##..
##..
E volessi passare dal primo . in basso a sinistra a quello in alto a destra, e' una mossa regolare?( Passo esattamente per il centro di 4 pixel adiacenti, dei quali uno irregolare)
E altri esempi simili. Come interpretare la regola correttamente?
Ciao ! Intanto grazie per la per la partecipazione , inizialmente temevo nessuno se lo filasse 'sto contest :P.
Per rispondere alla tua domanda: non e' una mossa ammessa. Nel caso in questione la retta che congiunge i centri delle due caselle passa giusto per l'angolo di una casella # per cui la distanza risulta essere giusto 1/2.
La regola dice che ogni casella la cui distanza (del centro) dalla retta sia minore o uguale a 1/2 deve essere sgombra.
Piu' semplicemente, la regola in questione dice in termini matematici che qualsiasi casella che viene anche solo toccata dalla retta deve essere sgombra.
Spero di essermi chiarito un po' meglio
Quote:
PS: Se mi lasciate da solo spezzo le braccine a tutti...
Beh, siamo almeno in due
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 00:04   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Grazie. (Nooo devo rifare il pezzo piu' brutto) Vabbe'.

Forse hai perso questo:

Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Altra domanda. Se DOPO aver passato il traguardo, sempre nella stessa mossa finale l'auto mi si schianta va bene lo stesso?
Insomma una vittoria postuma...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 00:10   #9
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
giusto per fare un paio di esempi:
le caselle grigie sono quelle che devono essere libere
Immagini allegate
File Type: png esempio1.png (1.3 KB, 34 visite)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 00:10   #10
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
esempio due (uff...perche' solo 1 attach ? ).
Immagini allegate
File Type: png esempio2.png (1.2 KB, 33 visite)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 00:11   #11
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Grazie. (Nooo devo rifare il pezzo piu' brutto) Vabbe'.
Sorry, la formula in effetti non e' chiarissima, ma era l'unico modo che mi era venuto in mente per scriverlo in modo rigoroso e non interpretabile.

Per l'altra domanda:
Quote:
La corsa finisce quando in un dato istante la macchina passa attraverso una delle
caselle del traguardo, ovvero quando viene fatta una mossa valida tra (x1,y1)
a (x2,y2) per la quale esiste una casella di traguardo (xt,yt) tale che
distanza( (xt,yt), S ) <= 1/2
(notare il grassetto)
Ovvero la casella di arrivo nel momento in cui si passa il traguardo deve essere sgombra.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 00:44   #12
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Sorry, la formula in effetti non e' chiarissima, ma era l'unico modo che mi era venuto in mente per scriverlo in modo rigoroso e non interpretabile.

Per l'altra domanda:

(notare il grassetto)
Ovvero la casella di arrivo nel momento in cui si passa il traguardo deve essere sgombra.
Ok. Quindi nel tuo esempio, essendo che le caselle di arrivo con = non hanno nulla dopo, occorre arrivarci fermandocisi proprio sopra.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 01:16   #13
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Esatto.
Inizialmente volevo lasciare spazio dietro, solo che quando ho fatto a mano la soluzione di esempio l'ho fatta partendo dal traguardo, per cui a posteriori ho scambiato partenza e arrivo , ecco il motivo per cui non c'e' spazio

Comunque arriveranno delle piste piu' divertenti e soprattutto piu' grandi :P
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele

Ultima modifica di marco.r : 17-05-2009 alle 02:10.
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 14:45   #14
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Errore
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 17:03   #15
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Mi ci voleva una birra.

E' lento, ma ho fiducia che funzioni.
Eccolo al lavoro sull'esempio.
29 passi, compresi inizio e fine (In lanciata, spero che valga anche se dopo c'e' un muro!!)

Codice:
Time - 5999ms
Steps - 29
########################################
##########################.....#########
##########################.....#########
###############....#######@----#########
##############...@@.@...#.@....#########
##############...@#....@.@....##########
##############....#####......###########
###############..@....##################
#######.......###.@.@..#################
######..@..@.@..###...@.################
#####.@...###.@.#####..@.###############
#####....####....#####....##############
####.@...####.@..######@..##############
####....#####....######...##############
####....#####....#####....##############
####@...######@..####..@..##############
####.....#####...###.....###############
####.....#####.@..#...@.################
####.....######..@..@..#################
####@====#######....####################
########################################
########################################
########################################
########################################
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2009, 08:51   #16
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Folgorazione notturna, scrivo, rifattorizzo e si scende.
Ho un QuadCore a 2.7GHz ora, e ovviamente ho rifattorizzato in modo da poter iniettare il parellismo, cosa che ho puntualmente fatto.
Leggendo il codice intermendio mi sono accorto che beneficerei dei 64bit. Mannaggia, avessi voglia di reinstallare metterei Windows7 a 64bit.

Codice:
Time - 408ms
Steps - 29
########################################
##########################.....#########
##########################.....#########
###############....#######@----#########
##############...@@.@...#.@....#########
##############...@#....@.@....##########
##############....#####......###########
###############..@....##################
#######.......###.@.@..#################
######...@.@.@..###...@.################
#####..@..###.@.#####....###############
#####....####....#####.@..##############
####..@..####.@..######...##############
####....#####....######...##############
####....#####....#####.@..##############
####.@..######@..####.....##############
####.....#####...###..@..###############
####.....#####.@..#..@..################
####.....######..@.@...#################
####@====#######....####################
########################################
########################################
########################################
########################################
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 18-05-2009 alle 08:55.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2009, 09:47   #17
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
hai provato anche con altri tracciati?

PS: se vuoi te lo testo sul mio sistema (2x dual core con win vista 64 bit)
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2009, 09:48   #18
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Temo sia sbagliato, infatti la macchina parte a velocità 0... mentre nel tuo il primo step è anche il più lungo


Cmq contest interessante, però nn mi viene in mente nulla di sensato
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2009, 10:10   #19
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da Tommo Guarda i messaggi
Temo sia sbagliato, infatti la macchina parte a velocità 0... mentre nel tuo il primo step è anche il più lungo


Cmq contest interessante, però nn mi viene in mente nulla di sensato
ehmmm...
veramente il suo primo step è correttamente il + corto..
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2009, 10:13   #20
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Tommo Guarda i messaggi
Temo sia sbagliato, infatti la macchina parte a velocità 0... mentre nel tuo il primo step è anche il più lungo


Cmq contest interessante, però nn mi viene in mente nulla di sensato
Ma la partenza e' quella in alto!
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Il MIT sperimenta il calcolo termico: op...
Sembra ormai certo: la prossima Xbox sar...
“Solutions Beyond Displays”: la strategi...
La società europea The Exploratio...
Dalle auto ai robot umanoidi: Faraday Fu...
Vodafone annuncia la dismissione di un s...
Stiga lancia i nuovi robot tagliaerba co...
Bullismo e cyberbullismo, Keenetic lanci...
Con AI Skills Checker Bitdefender mette ...
E-bike giapponese con 1.000 km di autono...
Un eVTOL con cui basta saper andare in b...
Dal mercato cinese al mondo: HONOR firma...
Sovranità digitale: l'UE sperimen...
Accesso alla memoria su Windows 11 solo ...
iPhone 18 Pro Max con batteria da oltre ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v