Bei dieser Herausforderung erledigen die Benutzer abwechselnd drei recht einfache Codierungsaufgaben in Programmiersprachen, die älter werden dürfen.
Für die erste Antwort muss eine Programmiersprache verwendet werden, die im Jahr 2015 erstellt wurde. Wenn mindestens eine Antwort aus einer 2015-Sprache vorliegt, können für die Antworten Programmiersprachen verwendet werden, die im Jahr 2014 erstellt wurden. Ebenso sind Antworten mit Sprachen aus 2013 nicht zulässig bis es mindestens eine Antwort für 2014 gibt.
Im Allgemeinen ist die Verwendung einer Programmiersprache aus dem Jahr Y erst zulässig, wenn eine Antwort in einer Sprache aus dem Jahr Y + 1 eingereicht wurde. Die einzige Ausnahme ist Y = 2015.
Das Jahr Ihrer Sprache finden
Um diese Frage zu beantworten, müssen Sie das Jahr kennen, in dem Ihre Programmiersprache erstellt wurde. Dies ist natürlich ein subjektiver Begriff; Einige Sprachen wurden über mehrere Jahre hinweg entwickelt, und viele Sprachen werden jedes Jahr aktualisiert. Lassen Sie das Jahr, in dem eine Sprache "hergestellt" wurde, das erste Jahr sein, in dem eine Implementierung für diese Sprache in der Öffentlichkeit erschien.
Zum Beispiel Python wurde „in gemacht“ 1991 , obwohl seine Entwicklung seit 1989 im Gang gewesen, und die Version 1.0 wurde erst 1994 veröffentlicht.
Wenn dieses Jahr immer noch subjektiv ist, verwenden Sie einfach Ihren gesunden Menschenverstand, um das am besten geeignete Jahr zu wählen. Lassen Sie sich nicht von leichten Meinungsverschiedenheiten über die Wahl des Jahres hinreißen. Bitte geben Sie einen Link zu einer Quelle an, aus der hervorgeht, wann Ihre Sprache erstellt wurde.
Verschiedene Versionen oder Standards einer Programmiersprache (z. B. Python 1, 2, 3) werden mit demselben Anfangsjahr als dieselbe Sprache gezählt.
Wenn das Jahr Ihrer Sprache also nicht 2015 ist, können Sie Ihre Antwort erst einreichen, wenn eine Antwort eingereicht wurde, deren Jahr das Jahr vor Ihrem ist.
Wenn bereits eine gültige Antwort mit demselben Jahr wie dem Ihren vorhanden ist, können Sie antworten. Es spielt keine Rolle, ob Ihre Sprache früher oder später im Jahr entwickelt wurde.
Aufgaben
Sie müssen die Aufgaben 1 bis 3 ausführen. Aufgabe 0 ist optional.
Diese Aufgaben wurden mehr oder weniger ausgewählt, um drei wichtigen Aspekten der Programmierung zu entsprechen: Ausgabe (Aufgabe 1), Schleifen (Aufgabe 2) und Rekursion (Aufgabe 3).
Aufgabe 0 - Sprachverlauf (optional)
Schreiben Sie mindestens einen Absatz, in dem die Geschichte der von Ihnen gewählten Programmiersprache erklärt wird: Wer hat sie entwickelt, warum, wie usw. Dies ist besonders empfehlenswert, wenn Sie persönlich dabei waren, als die Sprache entstand, und vielleicht sogar eine Rolle bei ihrer Entwicklung gespielt haben. Zögern Sie nicht, persönliche Anekdoten über die Auswirkung der Sprache auf Sie oder Ihre Arbeit oder ähnliches zu erzählen.
Wenn Sie zu jung sind, um ohne viel Recherche viel über die Geschichte Ihrer Sprache zu wissen, sollten Sie älteren Benutzern eine Notiz hinterlassen, in der Sie angeben, dass sie Ihren Beitrag bearbeiten und einen Verlauf aus erster Hand hinzufügen können.
Aufgabe 1 - "Hallo, Welt!" Variante
Schreiben Sie ein Programm, das gedruckt wird
[language name] was made in [year made]!
zum Standard-Ausgabebereich Ihrer Sprache (Standard für die neuesten Sprachen).
Wenn die Sprache beispielsweise Python wäre, wäre die Ausgabe:
Python was made in 1991!
Aufgabe 2 - ASCII Art N
Schreiben Sie ein Programm, mit dem der Benutzer eine ungerade positive Ganzzahl eingeben kann (Sie können davon ausgehen, dass die Eingabe immer gültig ist), und drucken Sie einen ASCII-Kunstbuchstaben N aus, der mit dem Zeichen erstellt wurde N
.
Wenn die Eingabe 1 ist, ist die Ausgabe:
N
Wenn die Eingabe 3 ist, ist die Ausgabe:
N N
NNN
N N
Wenn die Eingabe 5 ist, ist die Ausgabe:
N N
NN N
N N N
N NN
N N
Wenn die Eingabe 7 ist, ist die Ausgabe:
N N
NN N
N N N
N N N
N N N
N NN
N N
Das Muster geht so weiter. Die Ausgabe kann nachgestellte Leerzeichen enthalten.
Aufgabe 3 - GCD
Schreiben Sie ein Programm, mit dem der Benutzer zwei positive ganze Zahlen eingeben kann (Sie können davon ausgehen, dass die Eingabe immer gültig ist), und geben Sie den größten gemeinsamen Teiler aus . Dies ist definiert als die größte positive Ganzzahl, die beide Zahlen teilt, ohne einen Rest zu hinterlassen. Sie kann leicht mit dem Euklidischen Algorithmus berechnet werden .
Beispiele:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
, 876
→6
Sie können eine integrierte Funktion verwenden, aber versuchen herauszufinden, ob sie in der ersten Version Ihrer Sprache vorhanden war. Wenn nicht, versuchen Sie es nicht.
Regeln
- Sie können mehrmals antworten, aber für jede neue Antwort muss eine Sprache verwendet werden, die mindestens 5 Jahre vor der Sprache in Ihrer letzten Antwort erstellt wurde. Wenn Sie also mit einer Sprache von 2015 geantwortet haben, konnten Sie erst wieder antworten, wenn Sprachen für 2010 zulässig sind. Wenn Sie mit einer 2010-Antwort beginnen, können Sie keine 2015-Antwort als zweite Antwort festlegen, da 2015 nicht vor 2010 liegt.
- Wenn möglich, schreiben Sie Ihren Code so, dass er in der allerersten Version Ihrer Sprache (oder in einer möglichst alten Version) funktioniert hätte. (Dies ist keine Voraussetzung, da es schwierig sein kann, alte Compiler / Interpreter für einige Sprachen zu finden.)
- Stellen Sie das Posten einer bereits geposteten Sprache ein, es sei denn, die gepostete Antwort weist erhebliche Fehler auf oder Sie führen die Aufgaben auf eine ganz andere Weise aus.
- Golfen Sie Ihren Code ist in Ordnung, aber nicht erforderlich.
- Ein abschließender Zeilenumbruch in der Ausgabe eines Programms ist in Ordnung.
- Für die Aufgaben 2 und 3 sollten alle Eingabewerte unter einem vernünftigen Maximum wie 2 16 funktionieren (mindestens 256).
- Ihre Sprache muss vor dem Absenden dieser Frage existiert haben.
- Sehr alte Programmiersprachen können andere Ein- und Ausgabeformen haben als wir heute denken. Das ist okay. Führen Sie die Aufgaben so gut wie möglich im Kontext Ihrer Sprache aus.
Wertung
Die Punktzahl Ihrer Einreichung ist:
upvotes - downvotes + (2015 - languageYear) / 2
Somit wird die Stimmenzahl für jedes Jahr vor 2015 um 0,5 erhöht, was älteren Sprachen zugute kommt. Die Einsendung mit der höchsten Punktzahl gewinnt.
Antwortliste
Das folgende Stapel-Snippet listet alle gültigen Antworten nach ihrem Sprachjahr auf.
Sie müssen Ihren Beitrag mit dieser Markdown- Zeile beginnen, um sicherzustellen, dass er korrekt aufgelistet ist:
#[year] - [language name]
Zum Beispiel:
#1991 - Python
Der Name der Sprache kann sich in einem Link befinden (es wird derselbe Link in der Antwortliste sein):
#1991 - [Python](https://www.python.org/)
Antworten, die diesem Format nicht entsprechen oder ein Jahr haben, das noch nicht zulässig ist, oder von einem Benutzer stammen, der in den letzten 5 Jahren bereits geantwortet hat, werden als ungültig markiert.
<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>