In questa sfida, gli utenti completeranno a turno tre compiti di codifica abbastanza semplici in linguaggi di programmazione che possono essere progressivamente più vecchi.
La prima risposta deve utilizzare un linguaggio di programmazione creato nel 2015. Una volta che esiste almeno una risposta da un linguaggio 2015, le risposte possono utilizzare linguaggi di programmazione creati nel 2014. Allo stesso modo, le risposte che utilizzano i linguaggi dal 2013 non sono consentite fino a quando non vi sarà almeno una risposta per il 2014.
In generale, l'uso di un linguaggio di programmazione dell'anno Y non è consentito fino a quando non viene inviata una risposta utilizzando un linguaggio dell'anno Y + 1. L'unica eccezione è Y = 2015.
Trovare l'anno della tua lingua
Per rispondere a questa domanda, devi sapere l'anno in cui il tuo linguaggio di programmazione è stato "realizzato". Questo è, ovviamente, un termine soggettivo; alcune lingue sono state sviluppate nel corso di diversi anni e molte lingue vengono ancora aggiornate ogni anno. Lascia che l'anno in cui una lingua sia stata "realizzata" sia il primo anno in cui un'implementazione per quella lingua sia apparsa al pubblico.
Ad esempio, Python fu "realizzato nel" 1991 , sebbene il suo sviluppo fosse in corso dal 1989 e la versione 1.0 non fu rilasciata fino al 1994.
Se quest'anno è ancora soggettivo, basta usare il buon senso per scegliere l'anno più appropriato. Non impantanarti in lievi disaccordi sulle scelte dell'anno. Fornisci un link a una fonte che indichi quando è stata creata la tua lingua.
Versioni o standard diversi di un linguaggio di programmazione (ad esempio Python 1, 2, 3) vengono considerati come lo stesso linguaggio con lo stesso anno iniziale.
Pertanto, a meno che l'anno della tua lingua non sia il 2015, puoi inviare la tua risposta solo dopo che è stata inviata una risposta la cui lingua dell'anno è l'anno immediatamente precedente alla tua.
Se esiste già una risposta valida con lo stesso anno del tuo, puoi rispondere. Non importa se la tua lingua è stata sviluppata prima o dopo l'anno.
Compiti
È necessario completare le attività da 1 a 3. L'attività 0 è facoltativa.
Queste attività sono state più o meno scelte per corrispondere a tre aspetti importanti della programmazione: fornire output (Task 1), loop (Task 2) e ricorsione (Task 3).
Attività 0 - Cronologia della lingua (opzionale)
Scrivi almeno un paragrafo che spieghi la storia del tuo linguaggio di programmazione prescelto: chi lo ha sviluppato, perché, come, ecc. Ciò è particolarmente incoraggiato se eri personalmente in giro quando il linguaggio è nato, e forse ha anche avuto un ruolo nel suo sviluppo. Sentiti libero di mettere in relazione aneddoti personali sull'effetto che la lingua ha avuto su di te, sul tuo lavoro o su qualcosa del genere.
Se sei troppo giovane per sapere molto sulla storia della tua lingua senza molte ricerche, considera di lasciare una nota agli utenti più anziani che dice che possono modificare il tuo post e aggiungere un po 'di cronologia di prima mano.
Compito 1 - "Ciao, mondo!" Variante
Scrivi un programma che stampa
[language name] was made in [year made]!
nell'area di output standard della tua lingua (stdout per le lingue più recenti).
Ad esempio, se la lingua fosse Python, l'output sarebbe:
Python was made in 1991!
Compito 2 - ASCII Art N
Scrivi un programma che consenta all'utente di inserire un numero intero positivo dispari (puoi supporre che l'input sia sempre valido) e stampa una lettera di arte ASCII N creata usando il carattere N
.
Se l'ingresso è 1, l'uscita è:
N
Se l'ingresso è 3, l'uscita è:
N N
NNN
N N
Se l'ingresso è 5, l'uscita è:
N N
NN N
N N N
N NN
N N
Se l'ingresso è 7, l'uscita è:
N N
NN N
N N N
N N N
N N N
N NN
N N
Il modello continua così. L'output può contenere spazi finali.
Compito 3 - GCD
Scrivi un programma che permetta all'utente di inserire due numeri interi positivi (puoi supporre che l'input sia sempre valido) e stampa il loro massimo comune divisore . Questo è definito come il numero intero positivo più grande che divide entrambi i numeri senza lasciare un resto. Può essere facilmente calcolato usando l' algoritmo euclideo .
Esempi:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
, 876
→6
Puoi usare una funzione integrata ma prova a scoprire se era presente nella prima versione della tua lingua. In caso contrario, prova a non usarlo.
Regole
- Puoi rispondere più volte, ma ogni nuova risposta deve utilizzare una lingua creata almeno 5 anni prima della lingua dell'ultima risposta. Quindi, se hai risposto con una lingua del 2015, non potresti rispondere di nuovo fino a quando le lingue del 2010 non sono consentite. Se inizi con una risposta del 2010, non puoi fare in modo che il 2015 risponda alla tua seconda risposta perché il 2015 non è precedente al 2010.
- Se possibile, scrivi il tuo codice in modo che funzionasse nella prima versione della tua lingua (o nella versione più vecchia possibile). (Questo non è un requisito perché trovare vecchi compilatori / interpreti per alcune lingue potrebbe essere difficile.)
- Evita di pubblicare una lingua che è già stata pubblicata a meno che la risposta pubblicata non contenga errori significativi o che tu abbia un modo molto diverso di completare le attività.
- Giocare a golf il tuo codice va bene ma non è richiesto.
- Una nuova riga finale nell'output di qualsiasi programma va bene.
- Per le attività 2 e 3, tutti i valori di input inferiori a un massimo ragionevole come 2 16 dovrebbero funzionare (almeno 256).
- La tua lingua deve essere esistita prima che questa domanda fosse pubblicata.
- I linguaggi di programmazione molto vecchi possono avere diverse forme di input e output rispetto a ciò che pensiamo oggi. Questo va bene. Completa le attività al meglio delle tue capacità nel contesto della tua lingua.
punteggio
Il punteggio della tua richiesta è:
upvotes - downvotes + (2015 - languageYear) / 2
Pertanto, 0,5 viene aggiunto al conteggio dei voti per ogni anno prima del 2015, dando il vantaggio alle lingue più vecchie. Vince l'invio con il punteggio più alto.
Elenco di risposte
Lo snippet di stack di seguito elenca tutte le risposte valide in base all'anno linguistico.
Devi iniziare il tuo post con questa linea Markdown per assicurarti che sia elencato correttamente:
#[year] - [language name]
Per esempio:
#1991 - Python
Il nome della lingua potrebbe essere in un collegamento (sarà lo stesso collegamento nell'elenco delle risposte):
#1991 - [Python](https://www.python.org/)
Le risposte che non seguono questo formato o che hanno un anno non ancora consentito o che provengono da un utente che ha già risposto negli ultimi 5 anni sono contrassegnate come non valide.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>$(function(){function e(e,r){var a="https://api.stackexchange.com/2.2/questions/48476/answers?page="+e.toString()+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter=!YOKGPOBC5Yad160RQxGLP0r4rL";$.get(a,r)}function r(e){if(e.items.forEach(function(e){var r=e.link,a=e.owner.display_name,i=e.body.match(/<h1\b[^>]*>(\d{4}) - (.*?)<\/h1>/);if(i&&i.length>=3)var h=parseInt(i[1]),u=i[2];h&&u&&n>=h&&h>=t&&(!d.hasOwnProperty(e.owner.user_id)||d[e.owner.user_id]-h>=p)?(d[e.owner.user_id]=h,h==t&&--t,o.hasOwnProperty(h)||(o[h]=[]),o[h].push({language:u,user:a,link:r,score:e.score+(n-h)/2})):s.push(' <a href="'+r+'">'+a+"</a>")}),e.has_more)runQuery(++a,r);else{for(var i=n,h=[];o.hasOwnProperty(i);){for(var u=$("<tr>").append($("<td>").text(i.toString())),l=$("<td>"),c=$("<td>"),g=$("<td>"),f=0;f<o[i].length;f++){var v=o[i][f];l.append(v.language),c.append($("<a>").html(v.user).attr("href",v.link)),g.append(v.score),f+1<o[i].length&&(l.append("<br><br>"),c.append("<br><br>"),g.append("<br><br>"))}u.append(l).append(c).append(g),h.push(u),--i}$("#answers").find("tbody").append(h),s.length>0?$("#invalid").append(s):$("#invalid").remove()}}var a=1,n=2015,t=n-1,p=5,o={},s=[],d={};e(1,r)})</script><style>html *{font-family: Helvetica, Arial, sans-serif;}table{border: 4px solid #a4a; border-collapse: collapse;}th{background-color: #a4a; color: white; padding: 8px;}td{border: 1px solid #a4a; padding: 8px;}div{font-size: 75%;}</style><table id='answers'> <tr> <th>Year</th> <th>Language</th> <th>User (answer link)</th> <th>Score</th> </tr></table><div id='invalid'><br>Invalid Answers:</div>