Imprima o alfabeto sem usar cada vogal


72

Inspiração : em 1939, um homem chamado Ernest Vincent Wright escreveu um romance chamado Gadsby sem usar a letra 'e'.

Sua tarefa é escrever um conjunto de (até 5) programas em qualquer idioma (que tenha uma sintaxe baseada em texto *) para gerar todas as 26 letras do alfabeto em ordem. No entanto, para cada vogal aeiou, pelo menos um dos programas não deve incluir nenhuma ocorrência da vogal.

Então deve haver

  • um programa que não usa ' a ' ou ' A ' em nenhum lugar da sintaxe do programa.
  • um programa que não usa ' e ' ou ' E ' em nenhum lugar da sintaxe do programa.
  • um programa que não use ' i ' ou ' I ' em nenhum lugar da sintaxe do programa.
  • um programa que não usa ' o ' ou ' O ' em nenhum lugar da sintaxe do programa.
  • um programa que não usa ' u ' ou ' U ' em nenhum lugar da sintaxe do programa.

Todos eles devem produzir abcdefghijklmnopqrstuvwxyz.

O vencedor será a solução em que a duração de todos os programas é a mais curta.

* como a restrição não seria um grande desafio para Piet ou Whitespace


Classificações atuais (06 Mar 2014):


4
@ w0lf: Não, ele diz "até 5 programas" e "tamanho de todos os programas", que eu li como "só pode haver um programa e seu tamanho conta neste caso".
schnaader

9
@ PeterTaylor: Você não acha que evitar vogais em sua sintaxe é um desafio único? Como um programador JS, é especialmente interessante :)
mellamokb

2
As novas linhas são aceitáveis ​​na saída (ou seja, uma por caractere)? I pode encurtar alguns do meu código, se for esse o caso ...
Gaffi

2
A saída em maiúsculas é permitida?
Erik the Outgolfer

2
Eu sou o OP. Maiúsculas não permitidas.
precisa

Respostas:


48

Golfscript - 8 caracteres

123,97>+

8
maldita, realmente não pode bater golfscript em termos de concisão ...
Patrick Oscity

18
Dito isto, a legibilidade fede como um louco.
Andrew Gray

5
Não é tão ruim assim;) gerar uma lista de 123 números, remover aqueles que não são maiores que 97, forçar (matriz de números) a uma string.
McKay

3
Use em 91,65>+vez disso.
Erik the Outgolfer

31

Brainfuck, 38 caracteres

++++++[->++++<]>[->+>++++<<]>++[->+.<]

Obviamente, não há vogais (ou quaisquer outras letras) na sintaxe do cérebro .


2
Ponto válido lá! ;)
WallyWest

3
30 bytes:++[[<+++>->++++<]>]<<<<++[->+.<]
primo

23

PHP, 31 bytes

Não a, e, i, o, u:

<?=~žœ›š™˜—–•”“’‘ŽŒ‹Š‰ˆ‡†…;

A sequência binária após o til tem a seguinte representação hexadecimal:

\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85

Como existe um placar de idiomas, também posso enviar este:

Ruby (v1.8) 18 bytes

$><<[*97.chr..'z']

Não sei se entendi como isso funciona. Eu poderia obter uma explicação?
Mr. Llama

Quando aplicado a uma string, o operador ~ inverte todos os bits. Aqui eu inverti abc ... xyz. Como não há caracteres de símbolos (ou espaços em branco) na cadeia binária, as aspas também não são necessárias.
Primo

11
Você pode especificar uma codificação para o que você tem lá.
31412 Joey

11
iso-8859-1. Três caracteres 'não imprimíveis' foram removidos quando foram publicados, e foi por isso que incluí o hexadecimal.
Primo

2
Bom e provavelmente a versão PHP mais curta possível. Um comando para gerar o arquivo: php -r 'echo("<?=~\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85;");' > script.php. O comando para executá-lo: php -d error_reporting=0 script.php; echo.
axiac 18/08

16

Rubi ( 24 22)

Edit: parênteses podem ser omitidos, 2 caracteres a menos:

$><<'%c'*26%[*97..122]

24 caracteres em Ruby:

$><<('%c'*26)%[*97..122]

Como funciona

$>é um alias para $stdoutou STDOUT. Você pode escrever usando o <<operador O termo '%c'*26repete a string '%c'26 vezes. O %operador é definido em String como um alias para sprintf, portanto, str % valé equivalente a escrever sprintf(str,val). O caractere de formato %cé usado para transformar um valor de caractere em um caractere. Esses valores vêm de [*97..122]onde cria uma matriz contendo os valores de 97 a 122. Et voilá!


Muito agradável. Eu estava procurando uma maneira de usar, <<mas tinha esquecido $>.
Mark Reed

11
Eu nem sabia sobre $>antes, mas eu imaginei que tinha de haver algum apelido dólar-variável para $stdoutque ninguém pode lembrar :)
Patrick Oscity

21 caracteres: $><<[*"`".."z"][1,26](nota: isso só funciona no Ruby 1.8)
Ventero

O @Ventero não apenas no Ruby 1.8, também funciona no Ruby 1.9.2. Mas usar p [*"".." z "] [1,26]` é ainda mais curto. '
Hauleth

@Hauleth: Não, rodá-lo em 1.9 não gera a saída correta, pois em 1.9 Array#to_sé o mesmo que Array#inspect, enquanto em 1.8 é Array#join- então em 1.9 a saída é em ["a", "b", "c", "d", "e", ...]vez de abcdef.... Pelo mesmo motivo, pnão pode ser usado (ele invoca inspectseus argumentos, em vez de to_s).
Ventero 14/09/12

16

Pitão , 1 Personagem

G

Pyth pré-define certas variáveis. G é predefinido como o alfabeto em minúsculas. Pyth também imprime implicitamente cada linha com um valor de retorno razoável.


3
Ninja'd me por 3 anos ...
Stan Strum

15

JavaScript (100)

Não 'aeou':

this['\x61l\x65rt']('\x61bcd\x65fghijklmn\x6fpqrst\x75vwxyz')

Não 'i':

alert('abcdefgh\x69jklmnopqrstuvwxyz')

+1 Boa melhoria na minha resposta :) Eu tinha pensado em usar os \x##códigos, mas não tinha certeza se eles eram válidos em JavaScript.
Mellamokb

por que os alertas? em um terminal js, os objetos são ecoados automaticamente. ('\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz') @ 42 caracteres.
precisa saber é o seguinte

3
@ antony.trupe, para código de golfe, a IO é normalmente feita através dos mecanismos de IO incorporados na linguagem (ou plugins comuns). Para JS esta é tipicamente alert, confirm, prompt, console.log, e document.write. Simplesmente declarar uma string literal não a produz como saída quando executada. Caso contrário, você estaria correto, e eu teria usado isso.
ZzzzBov

produz saída (pela definição que uso de qualquer maneira) no console do google chrome, mas concordo com o problema; é uma restrição arbitrária para começar.
precisa saber é o seguinte

@ antony.trupe, em uma linguagem como PHP, você poderá usar um literal, porque é assim que ele executa IO.
ZzzzBov

15

K, 9

_26#.Q.b6

K, 10

"c"$97+!26

K, 14

.:".Q.","c"$97

2
e uma maneira boba de fazê-lo sem letras (12 caracteres):(@$`)$97+!26
Aaron Davies

11
A maneira K5 é quase a sua segunda solução, mas $leva símbolos em vez de cordas para controlar o tipo convertidos em: `c $ 97 + 26!
Johne

15

J, 26 23 17 16 caracteres

Depois de mais ou menos uma hora remexendo na gaveta de roupas íntimas de J, finalmente encontrei uma maneira de eliminar os verbos a.e u:.

2(3!:4)96+#\26$1

Anteriormente:

a.{~96++/\26$1
u:97+i.26

com agradecimentos a randomra pelo #\truque.


Ótima solução! Conseguiu encurtar com 1 caractere usando em #\ vez de +/\ .
randomra

5
Saia da minha gaveta de roupas íntimas
Joe

14

R, 17 + 19 = 36 caracteres

não ae (17):

intToUtf8(97:122)

não (19):

cat(letters,sep="")

12

Bash (38)

Sem vogais.

/*/*/*ntf "/*/?ch? {\x61..z}"|/*/b?sh

Este programa falha no meu sistema, porque / * / b? Sh não existe. Eu tenho / usr / local / bin / bash, não / bin / bash.
kernigh

2
Bom uso de globbing shell!
Caracol mecânico

@kernigh[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
Stan Strum

Seria melhor se /bin/shé bash. Em seguida, o código pode terminar com /*/sh(36 bytes). Mas eu não encontrei um sistema em que isso funcione. No Debian, / bin / sh não é bash. No meu Mac antigo, / bin / sh é o bash 2.05b0. (1), mas esta versão é muito antiga e não se expande {a..z}.
kernigh

11

C, 90 88 84 caracteres

Compile usando gcc -nostartfiles

b;_exit(){for(;b<26;)printf("%c",b+++97);}    // 42 chars, works for a, u
b;_start(){putchar(b+++97)>121?:_start();}    // 42 chars, works for e, i, o

_starte _exitsão uma boa maneira de se locomover main. Mas se uma linha de compilação fora do padrão está OK, por que não -DX=main?
ugoren

4
De alguma forma, -DX=mainparece pior do -nostartfilesque (para mim). É uma maneira de mover uma parte do código fonte para a linha de compilação e é o mesmo que escrever #define X mainno código fonte, o que seria claramente inválido. Considerando que -nostartfilesnão é uma maneira de renomear main, mas remove a restrição de que deve haver uma mainfunção (chamada _start). Por outro lado, usando -nostartfileso faz sentir um pouco como fazer batota, especialmente uma vez que contém 4 dos 5 "maus" letras :)
schnaader

É uma ladeira escorregadia ... A distância de -nostartfilesaté -DX=mainé pequena e, por que não salvar alguns caracteres com -DX=main()e assim por diante. Mas não consigo encontrar uma solução que não envolva nada suspeito.
ugoren

Não há como você definir a função principal como "mn", por exemplo?
Neil

@ Neil, apenas fazendo algo parecido -Dmn=main. A função CA deve ter uma mainfunção, a menos que -nostartfilesseja usada uma opção não padrão .
Matthew Flaschen


9

Ruby, 20 caracteres

$><<[*97.chr..?z]*''
  • 97.chr é uma maneira elaborada de dizer 'a'
  • .. especifica um intervalo
  • ?z é uma maneira mais curta de dizer "z"
  • isso [*range]faz com que o intervalo divida seus valores em uma matriz
  • *''é o mesmo que join(''); cola todos os valores da matriz juntos.
  • $><< Perlicism: imprime em stdout.

Este código parece não funcionar. ?znão é uma abreviação para 'z', mas sim para 122. Isso, no entanto, funciona para 18 bytes:$><<[*97.chr..'z']
primo

Ele funciona no Ruby 1.9.
steenslag

11
Eu baixei a versão 1.9.3 ... e você está certo. Por que eles mudariam algo assim? Eu posso ver por que o anarchy golf ainda está rodando 1.8.7. Enfim, a solução de 18 bytes funciona para v1.8.7-
primo

2
(4 anos mais tarde ...) Você pode substituir 97.chrcom ?\x61a -1 byte.
Jordan

9

dc: 18 17 caracteres

97[dP1+dBD>m]dsmx

E morreu um personagem corajoso.


Eu duvido que sim. Estou enrolando a cabeça e não vejo nenhuma maneira de encurtar. Terminei exatamente a mesma solução, exceto que usei o xregistro, o que torna a minha solução mais ofuscada.
Hynek -Pichi- Vychodil

3
97[dP1+dBD>m]dsmx, 17 caracteres. Aparentemente, você sempre pode inserir caracteres hexadecimais no controlador de domínio, mas como a base de entrada é dez, o valor é B*10+D=11*10+13=123='{'e não 0xBD.
quer

Oh, bom glich ;-)
Hynek -Pichi- Vychodil

9

Powershell, 75 62 caracteres

Editar: usado -f (String.Format) e indexação de matriz para reduzir significativamente o comprimento do código.

'{0}bcd{1}fgh{2}jklmn{3}pqrst{4}vwxyz'-f"$(1|gm)"[8,10,0,5,31]

Como funciona

gmé um alias para get-members, portanto, 1|gmretorna membros do valor 1, que é do System.Int32tipo:

PS C:\> 1|gm
   TypeName: System.Int32
Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value)
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj)
GetHashCode Method     int GetHashCode()
...

"$(1|gm)"retorna uma representação em string da lista acima, que contém todas as vogais necessárias para completar o alfabeto: " int C omp ar eTo (System.Object val ue) ..."


2
Este não é estável se MS acrescenta membros para System.Int32, embora :-)
Joey

Eu acho que teria que ser ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"que também é 75 caracteres :)
Danko Durbic

Argh, certo. Eu pesquei o item errado da minha história. Desculpa.
Joey

Na verdade, se você substituir ''+$(gv)por "$(gv)"você, obtém ($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"74 caracteres. Agradável!
Danko Durbić

2
Usei -f (String.Format) e indexação de matriz para reduzir significativamente o comprimento do código.
Tim Lewis

8

BASH: 40 caracteres

  • Não aeiouusado.
  • Nenhum curinga usado.
`tr c-y '\141-w'<<<'rtkpvh %s c'` {b..z}

8

Haskell, 12

['\97'..'z']

Ou isso é trapaça? :)


Eu admito não sei muito sobre Haskell, mas dá-me este erro:Parse error: naked expression at top level
primo

11
Você executá-lo no interpretador
Robau

7

MATLAB, 12 + 20 = 32 caracteres

Não eiou (12):

char(97:122)

Não aeou (20)

fprintf('%s',97:122)

7

No Perl,

também é possível sem vogais

mas muito mais difícil do que no Ruby etc. Isso usa um total de 101 caracteres, mas não requer a chamada de linha cmd (perl -e).

`\160\145\162\154\40\55\145\40\42\160\162\151\156\164\40\123\124\104\105\122\122\40\141\56\56\172\42`

=> Resultado: abcdefghijklmnopqrstuvwxyz

Em contraste com a solução PHP de 'aparência semelhante' , este é um programa real . O programa decodificado lê:

perl -e "print STDERR a..z"

Após a codificação para valores octais, outro intérprete perl é chamado durante a execução pelos `` (backticks). Os backticks consumiriam a saída, portanto, são impressos em STDERR.

A codificação é feita pelo sprintf:

my $s = q{perl -e "print STDERR a..z"};
my $cmd = eval(
       '"' . join('', map sprintf("\\%o",ord $_), split //, $s) . '"'
       );

e a codificação avaliada é o programa publicado (dentro de backticks):

"\160\145\162\154\40\55\145\40\42\160\162"
"\151\156\164\40\123\124\104\105\122\122"
"\40\141\56\56\172\42"

Saudações

rbo


8
Você pode encurtar isso para 44 caracteres por codificação única das vogais :)
marinus

7

Perl 5, 22 caracteres

(1) contém apenas ae e, 10 caracteres (requer 5.10+, executados na linha de comando):

-Esay+a..z

(2) contém apenas "i", 12 caracteres:

print v97..z

Se não for permitido executar a partir da linha de comando, você precisará usar use 5.01;say a..zo primeiro, com um custo de 7 caracteres e mais uma vogal, mas ainda não possui um 'i', resultando em uma entrada válida no total de 29 personagens.


Acho que a opção '-E' está ok, mas geralmente os 2 caracteres '-E' são adicionados ao comprimento total dos caracteres.
24512 Gareth

@gareth - o -E substitui -e por executar uma linha. Se você estiver executando um programa a partir de um arquivo, ficará com o use, embora possa substituí-lo pela opção de linha de comando -M5.01e cortar mais dois caracteres.
Mark Reed

Eu estava pensando na regra com a -popção em que 2 caracteres são adicionados à contagem. Olhando para essa meta questão, você poderá usar -M5.010gratuitamente a opção se essa opção ajudar a diminuir o seu código.
24512 Gareth

você pode substituir sua printdeclaração por dieraspar 2 caracteres
ardnew

chr 97..zpode ser substituído v97..zpor 3 bytes.
Primo

7

APL (Dyalog) ( 11 13)

Você pode precisar de uma fonte APL. Supõe-se que seja Unicode, mas não há visualização ...

Somente U(e talvez contando as vogais gregas):

⎕UCS 96+⍳26

(Isso é [quad]UCS 96+[iota]26:)

Apenas A:

⎕A

2
Ué uma vogal ...
Tobia

@Tobia: e levou mais de um ano para alguém ver isso (inclusive eu). Acho que o iota também é uma vogal agora que estou pensando nisso. Corrigido.
marinus

O símbolo funcional APL iota (U + 2373) não é considerado uma letra no Unicode e, portanto, não pode ser uma vogal. Observe que é diferente da letra minúscula grega iota (U + 03B9).
NGN

7

Python 2, 83

Não a , i , o ou u ; 47 :

x=97;s='';exec"s+=chr(x);x+=1;"*26+"pr\x69nt s"

Não e ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"

6

Python 2, 175 caracteres

Nota: imprime na saída diferente da resposta python anterior .

Usa 'e', ​​mas não a, i, o, u - 63 61 59 65 (corrigir imovimento incorreto para minúsculas) 115 caracteres (livrar-se dos espaços).

exec('fr%cm sys %cmp%crt*\nf%cr x %cn r%cnge(97,123):std%c%ct.wr%cte(chr(x)),'%(111,105,111,111,105,97,111,117,105))

(Originalmente, usava impressão com uma vírgula que inseria um espaço; também imprimia letras maiúsculas. Agora via requisitos rigorosos para 'abcdefghijklmnopqrstuvwxyz' como saída; adicionando instrução de importação).

Não usa 'e' (usa a, i, o, u; pode se livrar trivialmente de a, u para pequenas extensões) - 61 60 caracteres

import string
print string.__dict__['low%crcas%c'%(101,101)]

11
Sua primeira solução usa a letra i, então deve ser: exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))e voltamos a 64 caracteres.
precisa saber é

11
exec('fr%cm sys Eu mp%crt*\nf%cr ...
Gareth

BioGeek & @Gareth - minhas habilidades de detecção manual de vogais são péssimas. Obrigado por apontar; mas eu tinha um e extra escrito como '% c', então no final ele se iguala.
dr jimbob

Você pode remover os parênteses deexec('...')
mbomb007

5

JavaScript (154)

(1) Contém apenas i(99 caracteres):

t=this;s=-t+t+t.b;z=s[1]+'bcd'+s[7]+'fghijklmn'+s[4]+'pqrst'+s[21]+'vwxyz';t[s[1]+'l'+s[7]+'rt'](z)

(2) Contém apenas aeou(55 caracteres):

t=0;s=''+t.b;alert('abcdefgh'+s[5]+'jklmnopqrstuvwxyz')

Demonstração: http://jsfiddle.net/SvN5n/


$("h\x65\x61d")[0]["\x6fwn\x65rD\x6fc\x75m\x65nt"]["l\x6fc\x61t\x69\x6fn"]="j\x61v\x61scr\x69pt:\x65v\x61l(`f\x6fr(s='',l=65;l<90;l++){s=s+Str\x69ng.fr\x6fmCh\x61rC\x6fd\x65(l);};c\x6fns\x6fl\x65.l\x6fg(s)`)"208chars, não aeouiusado no código. Funciona no navegador Chrome.
Esc 3iệp

5

Pitão 159 117

Conforme mencionado no outro post do python, a parte mais difícil é lidar com o fato de que a única maneira de gerar saída é usar printor sys.stdout.write, ou ambos contendo i. É necessário fazer isso com 2 programas (que são independentes e não usam o shell interativo python para criar a saída):

Este usa apenas i por 55 caracteres:

print"%cbcd%cfghijklmn%cpqrst%cvwxyz"%(97,101,111,117)

Este evita o uso de i por 104 caracteres:

eval("sys.stdout.wr%cte"%105,{'sys':eval("__%cmport__('sys')"%105)})("%c"*26%tuple(range(97,123))+"\n")

EDIT: avanço maciço !!! Eu estava pensando que o uso de eval (ou mesmo executivo) era um truque e não estava realmente no espírito da competição. De qualquer forma, vasculhando os componentes internos, encontrei uma maneira de obter a função de impressão sem usar i. Então, aqui está o programa evitar-i (e o) para 68 caracteres:

vars(vars().values()[0])['pr%cnt'%105]("%c"*26%tuple(range(97,123)))

Mas como isso também evita o, isso pode ser associado a um que evita apenas a, e, u por 49 caracteres:

print"%cbcd%cfghijklmnopqrst%cvwxyz"%(97,101,117)

Você pode descartar a compatibilidade e obter um personagem -vars(vars().values()[0]).values()[47]
ugoren

5

Rubi 196 164 44 47

$><<"\x61bcd\x65fgh\x69jklmn\x6Fpqrst\x75vwxyz"

Essa é uma resposta válida, pois pgera aspas ao redor do alfabeto?
Mark Reed

Concordo p xé equivalente a ligar puts str.inspect, o que resulta em aspas circundantes.
Patrick Oscity

@padde vocês estão certos; mudou.
Cristian Lupascu

11
@padde Eu usei o seu $><<, então +1 para isso e parabéns; sua versão é muito melhor
Cristian Lupascu


5

VBA: 76 força bruta, 116 sem 'trapaça' (98 se novas linhas forem aceitáveis ​​na saída)

Funções padrão

Graças à verbosidade do VBA, não acredito que isso possa ser feito sem 'E' ou 'U' em um módulo de código padrão ...

  • " E "
  • "F u nction"
  • "S u b"

Funções imediatas

Correndo com a suposição de mellamokb, aqui está sem a declaração de função (deixando de fora SUBe FUNCTION) ( 116 caracteres , 98 se novas linhas são aceitáveis ​​na saída):

O texto abaixo não usa 'e' nem 'a' ( 43 caracteres , formatados para serem executados na janela imediata):

b=65:Do:z=z+Chr(b):b=b+1:Loop Until b=91:?z

O texto abaixo não usa 'i' nem 'a' nem 'u' ( 33 caracteres , formatados para serem executados na janela imediata):

For b=65 To 90:z=z+Chr(b):Next:?z

O texto abaixo não usa 'a' nem 'o' nem 'u' ( 40 caracteres , formatados para serem executados na janela imediata):

b=65:While b<91:z=z+Chr(b):b=b+1:Wend:?z

Se caracteres de nova linha forem permitidos na saída, os exemplos acima poderão ser mais curtos:

( 37 caracteres )

b=65:Do:?Chr(b):b=b+1:Loop Until b=91

( 27 caracteres )

For b=65 To 90:?Chr(b):Next

( 34 caracteres )

b=65:While b<91:?Chr(b):b=b+1:Wend

Força Bruta

Executando com a resposta Ruby do w0lf

( 76 caracteres , formatados para serem executados na janela imediata):

?Chr(65)&"BCD"&Chr(69)&"FGH"&Chr(73)&"JKLMN"&Chr(79)&"PQRST"&Chr(85)&"VWXYZ"

11
Eu acho que seria justo deixar de Sub..End Subfora, uma vez que a maioria dos outros programas não inclui definição de função.
precisa saber é o seguinte

@mellamokb Bem, isso me faz sentir melhor. Vou apresentar alguns exemplos para adicionar a isso.
Gaffi

2
Basta pensar nisso como "código é executado na janela imediata" :)
mellamokb

2
Bem, em caso de dúvida basta chamá-lo VBScript que pode ser incluído em um arquivo sem precisar de um Sub:)
Joey

Corrigido um monte de espaços desnecessários, alterado printpara, ?pois funciona na janela imediata.
Gaffi

5

Rebmu : 15 caracteres

Ctc'`L26[pn++C]

A leitura do Rebmu sempre requer um pouco de silêncio para começar:

c: tc '` l 26 [pn ++ c]

Então, ajuda a expandir as abreviações:

c: to-char-mu '`
loop 26 [
    prin ++ c
]

Seria mais óbvio usar um caractere literal para o predecessor de letras minúsculas a:

c: #"`"
loop 26 [
    prin ++ c
]

Mas isso não "mingau", portanto, converter uma palavra literal em um caractere passa para o mesmo objetivo. O que eu mais gosto, como na maioria dos Rebmu, é que ele tem o espírito de um programa sensato, apesar da compressão. (A resposta Golfscript é mais curta, mas não é mapeada para a maneira como um programador normalmente pensaria ao codificar.)


5

<> <(Peixe) - 22 caracteres

Como <> <usa o 'o' para imprimir um personagem, esse desafio parece impossível. Felizmente, o peixe pode alterar seu próprio código em tempo de execução. Isso me permitiu adicionar as instruções de impressão ao código.

Este código não usa nenhuma das vogais:

'`78'+11pv
:X:'z'=?;>1+

Você pode executar o código aqui

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.