Um dos meus tipos favoritos de desafios neste site são os de origem restrita . Esses desafios impõem uma restrição tratável por computador que as fontes de respostas em potencial devem passar. Eu gosto tanto desses desafios que tenho trabalhado em uma linguagem de golfe projetada para vencer esses desafios há algum tempo. Agora eu quero estender o desafio para você. Sua tarefa é projetar um idioma para resolver uma variedade de tarefas de origem restrita. Você terá tempo para projetar e implementar um idioma, no qual as alterações e novas adições não serão concorrentes e todos os envios serão confrontados com uma série de desafios de origem restrita .
Pontuação
Antes do lançamento do desafio, apresentarei uma lista de desafios simples a serem resolvidos e uma lista de restrições de origem a serem seguidas. Para cada correspondência de restrições de desafio e de origem, seu idioma pode ganhar entre 0 e 2 pontos. (haverá 10 desafios e 10 restrições, resultando em 100 combinações totais)
- 1 ponto se puder concluir a tarefa com a restrição em menos de 150 bytes
- 2 pontos se a solução for a solução mais curta de qualquer idioma competindo (os dois idiomas receberão 2 pontos em caso de empate)
- 0 pontos se eles não conseguirem criar um programa que conclua a tarefa sob a restrição em menos de 150 bytes.
Sua pontuação será a soma de todos os pontos ganhos em todas as partidas possíveis. O objetivo é obter a maior pontuação. Outras pessoas podem ajudá-lo a desenvolver suas soluções para cada desafio e melhorar sua pontuação.
Vou revelar 4 itens de cada lista no momento da postagem e outros 8 uma semana após a segunda resposta. Você só poderá marcar 1 ponto (o envio mais curto não conta) em qualquer correspondência que tenha ambas as partes reveladas antes da primeira semana. Dessa forma, você pode ter uma idéia do desempenho de seu idioma enquanto trabalha nele, mas não pode projetar seu idioma simplesmente para aproveitar todos os desafios e restrições.
Incluirei um hash das categorias pretendidas com a pergunta, para que você possa ter certeza de que não as altero durante a semana para beneficiar qualquer parte. Além disso, não direi a ninguém os parâmetros ocultos até a semana terminar, nem competirei no desafio.
Idiomas pré-existentes
Esse desafio está aberto a todos os idiomas pré-existentes; no entanto, se você não é o autor do idioma, faça da sua resposta um wiki da comunidade para que outros membros da nossa comunidade possam contribuir diretamente com a pontuação. Os sinalizadores da linha de comando não precisam obedecer a nenhuma restrição, no entanto, todo programa deve ser executado com os mesmos argumentos da linha de comando (ou seja, você deve escolher um e ficar com ele). Isso não adiciona à sua contagem de bytes.
Desafios e restrições
As restrições são impostas na codificação ASCII dos seus binários, independentemente da página de código que você usa. Alguns deles apontam para uma pergunta existente no site a partir da qual eles herdam seus requisitos de io para desafios e restrições de origem para restrições. Você pode ignorar qualquer coisa "banindo builtins" ou substituindo meta consensos existentes em qualquer um dos desafios vinculados.
Como uma advertência: não tente julgar um advogado; Eu sei que é uma competição, mas porque existem essencialmente 100 desafios diferentes de sub-desafios e simplesmente não posso garantir que todos eles serão totalmente sem problemas. Apenas tente se divertir.
Desafios
Restrições
Os bytes estão em ordem crescente (cada byte é maior que o último)
O código-fonte é um palíndromo
Os critérios restantes têm um hash sha512 de:
4de5eca33c6270798606cf1412820c4ce112d8b927ef02877f36795b2b15ffacca51ea598fa89b8d6bc9f4cde53810e0e7ade30e536e52e28f40a6a13841dfc5 -
fonte
Respostas:
Largura
O intérprete ainda está em andamento (ainda tenho vários slots de comando não utilizados). O repositório, com mais documentação, pode ser encontrado aqui .
Dennis adicionou Width ao TIO há menos de um minuto: Try It Online!
A largura é uma linguagem esotérica baseada em pilha que desenvolvi recentemente com base nas idéias que despejei nesta pergunta . Ele se baseia inteiramente na largura, mais ou menos, de uma letra em uma fonte "regular". Os únicos caracteres que fazem qualquer coisa são letras, maiúsculas e minúsculas. Todos os outros caracteres são ignorados. Divido as letras em 10 categorias de largura diferentes, que formam as 10 ações diferentes possíveis em Largura:
2
,5
E6
fornecem acesso aos comandos, a maioria dos quais interagem com a pilha. Mais informações podem ser encontradas nainfo.txt
página do repositório do Github.Este é o código Python do intérprete. Ainda tenho vários comandos a serem adicionados e estou pensando em como trabalhar com o tratamento de erros, mas, caso contrário, deve estar completo. (Também vou adicionar um sinalizador em algum momento para permitir testes com uma sintaxe mais abstrata, porque, caso contrário, essa linguagem é uma dor gigante para se trabalhar)
fonte