Avviso: sono disposto a dare una generosità a qualsiasi risposta che trovo interessante.
La tua sfida è progettare un computer con set di istruzioni (OISC) completo di Turing :
Un OISC è una macchina astratta che utilizza solo un'istruzione - ovviando alla necessità di un codice operativo del linguaggio macchina. Con una scelta giudiziosa per la singola istruzione e risorse infinite, un OISC è in grado di essere un computer universale allo stesso modo dei computer tradizionali che hanno più istruzioni.
Ecco alcuni esempi di singoli comandi che rendono un OISC completo di Turing.
Regole:
È necessario fornire una sua interpretazione o prova
Devi fornire un interprete per la tua lingua. Questo interprete dovrebbe essere limitato solo dalla memoria / dal tempo (ad es. Non deve avere restrizioni imposte dall'utente). Se non fornisci un interprete per la tua lingua (per qualsiasi motivo diverso dalla pigrizia) devi dimostrare che è possibile scrivere. Un interprete deve essere possibile .
Devi dimostrare la sua completezza di Turing
Devi includere una prova formale che la tua lingua è Turing completa. Un modo semplice per farlo è dimostrare che può interpretare o avere lo stesso comportamento di un altro linguaggio completo di Turing. Il linguaggio più semplice da interpretare sarebbe Brainf ** k .
Ad esempio, un linguaggio normale che ha tutti gli stessi comandi di Brainf ** k (e la stessa mancanza di restrizioni di memoria imposte dall'utente) è Turing completo perché tutto ciò che può essere implementato in Brainf ** k può essere implementato nella lingua .
Ecco un elenco di lingue complete di Turing molto semplici da implementare.
Requisiti OISC aggiuntivi
Questo OISC dovrebbe avere solo un'istruzione - non può avere più istruzioni con una di esse che lo rende Turing completo.
Il tuo OISC può utilizzare qualsiasi sintassi che ti piace. Dovresti definire nella tua risposta cosa sono le istruzioni, quali sono i dati e cosa è un no-op (es. Spazi bianchi). Essere creativo!
Gli argomenti non devono solo essere numeri interi. Ad esempio, /// è un bellissimo esempio di OISC completo di Turing.
Come e se l'input e l'output sono presi e dati sono lasciati a te. La maggior parte degli OISC implementa l'I / O tramite posizioni di memoria specifiche, ma potrebbero esserci altri modi per farlo e si è incoraggiati a trovarne uno.
Una risposta valida deve fornire un codice di esempio nel tuo OISC, includendolo nel post o collegandolo a una semplice sfida risolta nella lingua.
Voto
Elettori, ricordatevi di non votare proposte noiose. Esempi:
- lenguage -equivalents
- Un'implementazione di un OISC esistente (risponditori, crearne uno tuo!)
- Un "OISC" in cui il primo argomento specifica un comando da chiamare ( esempio )
Tuttavia, dovresti valutare proposte interessanti e creative, come:
- Un OISC basato su un'equazione matematica
- Uno ZISC completo di Turing basato su una rete neurale
- Un OISC in cui l'I / O di output avviene in modi diversi da determinati percorsi di memoria
vincente
Come nel caso del concorso di popolarità , vince la risposta con il maggior numero di voti! In bocca al lupo!