Crie uma linguagem e implementação semelhantes a Muriel


9

Muriel é uma linguagem em que a única maneira de fazer um loop é criar um quine e executá-lo. Seu trabalho é criar seu próprio idioma com essa propriedade e implementá-lo em um idioma pré-existente.

Vamos definir um idioma semelhante ao Muriel da seguinte forma:

  1. Ele possui um comando interno para executar código em sua própria linguagem, semelhante ao @comando de Muriel ou do python exec.
  2. Turing está completo.
  3. Se você remover o comando de execução interno, ele não estará mais completo.

Muriel é semelhante a Muriel @como seu comando de execução embutido. O Smurf também é parecido com o Muriel (seu comando de execução embutido é x). Python não é parecido com Muriel, pois ainda está completo com Turing se você remover exec.

Seu trabalho é criar uma linguagem de programação semelhante a Muriel e, em seguida, fornecer uma implementação em uma linguagem de sua escolha. Sua pontuação é a duração da implementação, que você está tentando minimizar.

Notas:

  1. Sua execução interna não precisa funcionar exatamente como Muriel. Cabe a você como ele lida com a finalização do programa filho, erros, escopo, etc ...
  2. A linguagem que você escreve a implementação não pode em si ser Muriel-like. (Isso é para que @não seja uma entrada válida.) Também deve ter existido antes desta postagem.

Underload é um idioma parecido com Muriel?
alephalpha

@JerryJeremiah Minha edição torna mais clara?
precisa saber é o seguinte

@alephalpha Esse wiki diz "Sem ^, o programa restante sempre diminuirá de tamanho, eventualmente interrompendo". Se isso for verdade, então sim, Underload é parecido com Muriel.
precisa saber é o seguinte

O que você faz se o seu idioma de destino tiver vários evalcomandos? (Por exemplo, Python exece eval) Exigir a remoção de todos eles para perder o TCness?
CalculatorFeline

11
@PyRulez Eu acho que isso deve ser popularity-contest em vez de código-golf, porque senão a escolha da linguagem de implementação tornaria um desafio camaleão
Uriel

Respostas:


3

Python 3 e "O subconjunto mínimo de TC de carga insuficiente, mas com os caracteres alterados para 2019, invertido e com um 0no topo", 156 bytes

c=input()
n=1
t=c
s=[]
while c:
 *c,i=c
 if n:
  if"6">i:n+=int(i)-1
  if n:t=[i]+t
  else:s+=[t];t=[]
 elif"2"==i:n=1
 elif"2">i:s+=s[-1:]
 else:c+=s.pop()

Experimente online!

Explicações no cabeçalho, código comentado no rodapé.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.