Nesse desafio, os usuários se revezam na conclusão de três tarefas de codificação bastante simples em linguagens de programação que podem ser progressivamente mais antigas.
A primeira resposta deve usar uma linguagem de programação que foi feita no ano de 2015. Quando houver pelo menos uma resposta de uma linguagem de 2015, as respostas poderão usar linguagens de programação que foram feitas em 2014. Da mesma forma, respostas que usam linguagens de 2013 não são permitidas até que haja pelo menos uma resposta de 2014.
Em geral, o uso de uma linguagem de programação do ano Y não é permitido até que uma resposta usando uma linguagem do ano Y + 1 seja enviada. A única exceção é Y = 2015.
Encontrando o ano do seu idioma
Para responder a essa pergunta, você deve saber o ano em que sua linguagem de programação foi "criada". É claro que este é um termo subjetivo; alguns idiomas foram desenvolvidos ao longo de vários anos e muitos idiomas ainda estão sendo atualizados a cada ano. Que o ano em que um idioma foi "criado" seja o primeiro ano em que uma implementação desse idioma apareceu no público em geral.
Por exemplo, o Python foi "fabricado" em 1991 , embora seu desenvolvimento estivesse em andamento desde 1989, e a versão 1.0 não foi lançada até 1994.
Se este ano ainda for subjetivo, use seu bom senso para escolher o ano mais apropriado. Não fique atolado em pequenas divergências sobre as escolhas de ano. Forneça um link para uma fonte que diz quando seu idioma foi criado.
Versões ou padrões diferentes de uma linguagem de programação (por exemplo, Python 1, 2, 3) são contados como a mesma linguagem no mesmo ano inicial.
Portanto, a menos que o ano do seu idioma seja 2015, você só poderá enviar sua resposta depois que uma resposta for enviada, cujo ano do idioma é o ano imediatamente anterior ao seu.
Se uma resposta válida com o mesmo ano que a sua já existir, você poderá responder. Não importa se o seu idioma foi desenvolvido no início ou no final do ano.
Tarefas
Você deve concluir as tarefas de 1 a 3. A tarefa 0 é opcional.
Essas tarefas foram mais ou menos escolhidas para corresponder a três aspectos importantes da programação: fornecer saída (tarefa 1), loop (tarefa 2) e recursão (tarefa 3).
Tarefa 0 - Histórico do idioma (opcional)
Escreva pelo menos um parágrafo explicando o histórico da sua linguagem de programação escolhida: quem a desenvolveu, por que, como, etc. Isso é especialmente encorajado se você estiver por perto quando a linguagem surgiu, e talvez até tenha participado de seu desenvolvimento. Sinta-se à vontade para contar histórias pessoais sobre o efeito que o idioma teve sobre você ou seu trabalho ou algo assim.
Se você é jovem demais para saber muito sobre o histórico do seu idioma sem muita pesquisa, considere deixar um recado para os usuários mais velhos, informando que eles podem editar sua postagem e adicionar um histórico em primeira mão.
Tarefa 1 - "Olá, mundo!" Variante
Escreva um programa que imprima
[language name] was made in [year made]!
para a área de saída padrão do seu idioma (stdout para os idiomas mais recentes).
Por exemplo, se a linguagem fosse Python, a saída seria:
Python was made in 1991!
Tarefa 2 - ASCII Art N
Escreva um programa que permita ao usuário digitar um número inteiro positivo ímpar (você pode assumir que a entrada é sempre válida) e imprima uma letra de arte ASCII N feita com o caractere N
.
Se a entrada for 1, a saída é:
N
Se a entrada for 3, a saída é:
N N
NNN
N N
Se a entrada for 5, a saída é:
N N
NN N
N N N
N NN
N N
Se a entrada for 7, a saída é:
N N
NN N
N N N
N N N
N N N
N NN
N N
O padrão continua assim. A saída pode conter espaços à direita.
Tarefa 3 - GCD
Escreva um programa que permita ao usuário digitar dois números inteiros positivos (você pode assumir que a entrada é sempre válida) e imprima seu maior divisor comum . Isso é definido como o maior número inteiro positivo que divide os dois números sem deixar resto. Pode ser facilmente calculado usando o algoritmo euclidiano .
Exemplos:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
, 876
→6
Você pode usar uma função interna, mas tente descobrir se ela estava lá na primeira versão do seu idioma. Caso contrário, tente não usá-lo.
Regras
- Você pode responder várias vezes, mas cada nova resposta deve usar um idioma criado pelo menos 5 anos antes do idioma em sua última resposta. Portanto, se você respondeu com um idioma de 2015, não poderá responder novamente até que 2010 sejam permitidos. Se você começar com uma resposta de 2010, não poderá fazer da resposta de 2015 sua segunda resposta, porque 2015 não é anterior a 2010.
- Se possível, escreva seu código para que ele funcione na primeira versão do seu idioma (ou na versão mais antiga possível). (Isso não é um requisito, pois pode ser difícil encontrar compiladores / intérpretes antigos para alguns idiomas.)
- Evite postar um idioma que já tenha sido publicado, a menos que a resposta publicada tenha erros significativos ou você tenha uma maneira muito diferente de concluir as tarefas.
- Jogar golfe com seu código é bom, mas não obrigatório.
- Uma nova linha à direita na saída de qualquer programa é boa.
- Para as tarefas 2 e 3, todos os valores de entrada abaixo de um máximo razoável, como 2 16, devem funcionar (256 no mínimo).
- Seu idioma deve ter existido antes que esta pergunta fosse publicada.
- Linguagens de programação muito antigas podem ter diferentes formas de entrada e saída do que pensamos hoje. Isto é bom. Complete as tarefas da melhor maneira possível no contexto do seu idioma.
Pontuação
A pontuação do seu envio é:
upvotes - downvotes + (2015 - languageYear) / 2
Assim, 0,5 é adicionado à contagem de votos para cada ano antes de 2015, dando a vantagem para os idiomas mais antigos. A finalização com a pontuação mais alta vence.
Lista de respostas
O snippet de pilha abaixo lista todas as respostas válidas de acordo com o ano do idioma.
Você deve iniciar sua postagem com esta linha de Markdown para garantir que ela esteja listada corretamente:
#[year] - [language name]
Por exemplo:
#1991 - Python
O nome do idioma pode estar em um link (será o mesmo link na lista de respostas):
#1991 - [Python](https://www.python.org/)
As respostas que não seguem esse formato, ou têm um ano que ainda não é permitido, ou são de um usuário que já respondeu nos últimos 5 anos são marcadas como invá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>