La sfida: definire x
in modo tale che l'espressione (x == x+2)
valuti come vera.
Ho taggato la domanda con C, ma le risposte in altre lingue sono benvenute, purché siano creative o evidenzino un aspetto interessante della lingua.
Intendo accettare una soluzione C, ma altre lingue possono ottenere il mio voto.
- Corretto: funziona su implementazioni conformi agli standard. Eccezione: assumere un'implementazione dei tipi di base, se si tratta di un'implementazione comune (ad esempio supponendo che
int
il complemento a 32 bit 2) sia OK. - Semplice: dovrebbe essere piccolo, utilizzare le funzioni linguistiche di base.
- Interessante - è soggettivo, lo ammetto. Ho alcuni esempi di ciò che considero interessante, ma non voglio dare suggerimenti. Aggiornamento : evitare il preprocessore è interessante.
- Veloce: verrà accettata la prima buona risposta.
Dopo aver ottenuto 60 risposte (non mi sarei mai aspettato una simile previsione), potrebbe essere utile riassumerle.
Le 60 risposte si dividono in 7 gruppi, 3 dei quali possono essere implementati in C, il resto in altre lingue:
- Il preprocessore C.
#define x 2|0
è stato suggerito, ma ci sono molte altre possibilità. - Virgola mobile. Grandi numeri, infinito
o NaNfunzionano tutti. Puntatore aritmetico. Un puntatore a un'enorme struttura provoca l'aggiunta di 2 da avvolgere.
Il resto non funziona con C:
- Sovraccarico dell'operatore - A
+
che non viene aggiunto o==
che restituisce sempre true. - Effettuare
x
una chiamata di funzione (alcune lingue lo consentono senza lax()
sintassi). Quindi può restituire qualcos'altro ogni volta. - Un tipo di dati a un bit. Poi
x == x+2 (mod 2)
. - Modifica
2
: alcune lingue ti consentono di assegnarle0
.
add to Set
dalla libreria standard, senza ridefinire +
te stesso, non rientra in queste 7 categorie, IMHO.
4. Quick
? Intendi "Chiunque ne conosca uno ed è abbastanza fortunato da leggere prima questa domanda"?