En este desafío, los usuarios se turnarán para completar tres tareas de codificación bastante simples en lenguajes de programación que pueden ser progresivamente más antiguas.
La primera respuesta debe usar un lenguaje de programación que se hizo en el año 2015. Una vez que haya al menos una respuesta de un idioma de 2015, las respuestas pueden usar lenguajes de programación que se hicieron en 2014. Del mismo modo, las respuestas que usan idiomas de 2013 no están permitidas hasta que haya al menos una respuesta de 2014.
En general, el uso de un lenguaje de programación del año Y no está permitido hasta que se haya enviado una respuesta utilizando un lenguaje del año Y + 1. La única excepción es Y = 2015.
Encontrar el año de tu idioma
Para responder a esta pregunta, debe saber el año en que su lenguaje de programación fue "creado". Este es, por supuesto, un término subjetivo; algunos idiomas se desarrollaron en el transcurso de varios años, y muchos idiomas todavía se actualizan cada año. Sea el año en que se "hizo" un idioma el primer año que apareció una implementación para ese idioma en el público en general.
Por ejemplo, Python se hizo en 1991 , aunque su desarrollo había estado en progreso desde 1989, y la versión 1.0 no se lanzó hasta 1994.
Si este año sigue siendo subjetivo, solo use su sentido común para elegir el año más apropiado. No se empantane con ligeros desacuerdos sobre las elecciones de año. Proporcione un enlace a una fuente que indique cuándo se creó su idioma.
Las diferentes versiones o estándares de un lenguaje de programación (por ejemplo, Python 1, 2, 3) se cuentan como el mismo idioma con el mismo año inicial.
Entonces, a menos que el año de su idioma sea 2015, solo puede enviar su respuesta una vez que se haya enviado una respuesta cuyo año de idioma es el año anterior al suyo.
Si ya existe una respuesta válida con el mismo año que la suya, entonces puede responder. No importa si su idioma se desarrolló antes o más tarde en el año.
Tareas
Debe completar las tareas 1 a 3. La tarea 0 es opcional.
Estas tareas fueron más o menos elegidas para corresponder a tres aspectos importantes de la programación: proporcionar salida (Tarea 1), bucle (Tarea 2) y recursividad (Tarea 3).
Tarea 0 - Historial de idiomas (opcional)
Escriba al menos un párrafo que explique la historia de su lenguaje de programación elegido: quién lo desarrolló, por qué, cómo, etc. Esto se recomienda especialmente si usted estuvo presente cuando surgió el lenguaje, y tal vez incluso participó en su desarrollo. Siéntase libre de relatar anécdotas personales sobre el efecto que tuvo el lenguaje en usted o su trabajo, o algo así.
Si eres demasiado joven para saber mucho sobre la historia de tu idioma sin mucha investigación, considera dejar una nota a los usuarios mayores que diga que pueden editar tu publicación y agregar algo de historia de primera mano.
Tarea 1: "¡Hola, mundo!" Variante
Escribe un programa que imprima
[language name] was made in [year made]!
al área de salida estándar de su idioma (stdout para los idiomas más recientes).
Por ejemplo, si el lenguaje fuera Python, el resultado sería:
Python was made in 1991!
Tarea 2 - ASCII Art N
Escriba un programa que permita al usuario ingresar un entero positivo impar (puede suponer que la entrada siempre es válida) e imprime una letra N ASCII con el carácter N
.
Si la entrada es 1, la salida es:
N
Si la entrada es 3, la salida es:
N N
NNN
N N
Si la entrada es 5, la salida es:
N N
NN N
N N N
N NN
N N
Si la entrada es 7, la salida es:
N N
NN N
N N N
N N N
N N N
N NN
N N
El patrón continúa así. La salida puede contener espacios finales.
Tarea 3 - MCD
Escriba un programa que permita al usuario ingresar dos enteros positivos (puede suponer que la entrada siempre es válida) e imprime su máximo divisor común . Esto se define como el número entero positivo más grande que divide ambos números sin dejar un resto. Se puede calcular fácilmente utilizando el algoritmo euclidiano .
Ejemplos:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
, 876
→6
Puede usar una función incorporada, pero intente averiguar si estaba allí en la primera versión de su idioma. Si no, intente no usarlo.
Reglas
- Puede responder varias veces, pero cada nueva respuesta debe usar un idioma hecho al menos 5 años antes del idioma en su última respuesta. Entonces, si respondió con un idioma de 2015, no podría responder nuevamente hasta que se permitan los idiomas de 2010. Si comienza con una respuesta de 2010, no puede hacer que una respuesta de 2015 sea su segunda respuesta porque 2015 no es antes de 2010.
- Si es posible, escriba su código para que haya funcionado en la primera versión de su idioma (o una versión tan antigua como sea posible). (Esto no es un requisito porque encontrar compiladores / intérpretes antiguos para algunos idiomas puede ser difícil).
- Abstenerse de publicar un idioma que ya ha sido publicado a menos que la respuesta publicada tenga errores significativos o tenga una forma muy diferente de completar las tareas.
- Golfing su código está bien, pero no es obligatorio.
- Una nueva línea final en la salida de cualquier programa está bien.
- Para las tareas 2 y 3, todos los valores de entrada por debajo de un máximo razonable como 2 16 deberían funcionar (256 como mínimo).
- Su idioma debe haber existido antes de que se publicara esta pregunta.
- Los lenguajes de programación muy antiguos pueden tener diferentes formas de entrada y salida de lo que pensamos hoy. Esto esta bien. Complete las tareas lo mejor que pueda en el contexto de su idioma.
Puntuación
La puntuación de su envío es:
upvotes - downvotes + (2015 - languageYear) / 2
Por lo tanto, se agrega 0.5 al conteo de votos para cada año antes de 2015, dando la ventaja a los idiomas más antiguos. La presentación con la puntuación más alta gana.
Lista de respuestas
El fragmento de pila a continuación enumera todas las respuestas válidas según su año de idioma.
Debes comenzar tu publicación con esta línea de Markdown para asegurarte de que esté lista correctamente:
#[year] - [language name]
Por ejemplo:
#1991 - Python
El nombre del idioma puede estar en un enlace (será el mismo enlace en la lista de respuestas):
#1991 - [Python](https://www.python.org/)
Las respuestas que no siguen este formato, o tienen un año que aún no está permitido, o provienen de un usuario que ya respondió en los últimos 5 años están marcadas como no válidas.
<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>