C'è un gioco a cui mi piace giocare. Succede su una griglia di dimensioni finite (ma è avvolta, come una sfera). Su quella griglia, viene selezionato un punto casuale (solo intero). Quindi, io, all'utente, viene richiesto un input di coordinate. Se il mio input corrisponde esattamente al punto casuale, mi viene detto che ho vinto. Altrimenti, mi viene detta la distanza punto-punto tra il mio input e il punto casuale. Ad esempio, se avessi indovinato (2,2)
e il punto casuale fosse a (4,3)
, allora la distanza sarebbe sqrt[(3-2)^2 + (4-2)^2] = sqrt[5]
.
Il gioco continua fino a quando il giocatore arriva nella posizione corretta del punto.
Obiettivo Creare una versione funzionale del gioco sopra descritto. È necessario creare un programma completo per farlo. Ecco cosa dovrebbe fare il tuo programma:
- Richiedi due input: l'altezza e la larghezza della scheda. L'origine è nella parte in alto a sinistra del tabellone. Questi ingressi non supereranno
1024
. - Seleziona un punto casuale su quel tabellone; questo sarà il punto da indovinare.
- Accetta input simulando un turno. L'input sarà una coppia di numeri interi separati da spazio o due input interi separati. In risposta a questo input, il programma farà una delle due cose:
- Se l'ingresso corrisponde al punto casuale selezionato, emette un messaggio che segnala la vittoria dell'utente. Suggerirei "Hai vinto!".
- In caso contrario, emettere la distanza tra il punto di input dell'utente e il punto casuale.
- Una volta che l'utente ha ottenuto la vittoria, visualizza il numero di turni effettuati dall'utente. Il programma quindi termina.
bonus
I bonus vengono applicati nell'ordine in cui compaiono in questo elenco
- -150 byte se il tuo programma accetta un numero intero di input
D
che descrive la dimensione in cui si svolge il gioco. Ad esempio, seD = 3
, quindi, si crea un punto casuale di3
numeri interi, si prendono3
input di numeri interi e si genera la distanza tra questi punti. - -50% (o + 50% se
score < 0
) se si fornisce una rappresentazione grafica della scheda (ASCII o Picture) che mostra dove l'utente ha precedentemente indovinato sulla griglia di determinate dimensioni e il contatore di virate. (Se scegli il primo bonus, questo bonus si applica solo alle modalità2D
e1D
. Se aggiungi un output grafico 3D, otterrai un ulteriore -50%.) - -60 byte se è possibile fornire un gamemode (selezionato da un input all'inizio; ovvero, quando assegnato
0
, eseguire il gamemode normale; quando assegnato1
, eseguire questo gamemode) in cui il punto si sposta di 1 unità in una direzione ortogonale casuale per turno
Maggiori informazioni sul confezionamento
L'avvolgimento si verifica solo quando, nel terzo bonus, il punto mobile si sposta attraverso uno qualsiasi dei confini; in questo caso, il punto mobile viene deformato al rispettivo punto, in questo modo:
... ...
..R (move right) R..
... ...
Questo comportamento di avvolgimento non influisce sull'ipotesi dell'utente, a parte il fatto che il punto ha cambiato direzione.
Classifica
Lo snippet di stack nella parte inferiore di questo post genera il catalogo dalle risposte a) come elenco della soluzione più breve per lingua eb) come classifica generale.
Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, usando il seguente modello Markdown:
# Language Name, N bytes
dov'è N
la dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se si desidera includere più numeri nell'intestazione (ad es. Perché il punteggio è la somma di due file o si desidera elencare separatamente le penalità del flag dell'interprete), assicurarsi che il punteggio effettivo sia l' ultimo numero nell'intestazione:
# Perl, 43 + 2 (-p flag) = 45 bytes
Puoi anche rendere il nome della lingua un collegamento che verrà quindi visualizzato nello snippet:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
10x10
, il punto casuale è (9,4)
, e immagino (2,2)
, è la distanza sqrt(13)
o sqrt(53)
? (Nota per il futuro: se stai facendo qualcosa di strano, non includere la casualità perché rende quasi impossibile fornire casi di test). 2. Nel terzo bonus, la distanza deve essere calcolata ed emessa prima o dopo lo spostamento del punto?