Em particular, use cada um destes símbolos pelo menos uma vez no seu código-fonte:
! " # $ % & ' () * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
Símbolos dentro de comentários, cadeias literais, regexps (ou qualquer outro tipo de literal etc.) não contam (mas seus delimitadores, como /**/
ou ""
contam).
O programa não deve executar nenhuma ação. Ele só precisa compilar e não fazer nada quando executado.
Se, por algum motivo, alguns dos símbolos não puderem ser usados no idioma de sua escolha, explique-o rigorosamente (o que e por que deve ser excluído).
Atualização: algumas respostas usavam símbolos dentro de expressões regulares. Eu consideraria isso um pouco problemático, é a mesma coisa que colocá-los em literais de string ou comentários (é por isso que coloquei etc. nesse requisito). Por favor, tente sem isso. Também atualizei o requisito acima.
Atualização: o código mais curto vence (marcado como código-golfe ). Como sugerido, provavelmente precisaremos de alguns critérios de desempate. Sugiro que, se houver um empate, o vencedor é aquele em que os símbolos ASCII aparecem o mais ordenados possível. Formalmente: filtre a primeira ocorrência de cada um dos símbolos listados em um programa. Isso resultará em uma permutação nos símbolos listados. O programa com menor número de inversões de sua permutação vence.
Atualização: ficaria feliz em ver algumas / mais soluções em linguagens regulares / comuns, como C (++), Java, Scala, Haskell, etc.
fonte
@%
nem o backtick pode aparecer em c, exceto como parte de um literal (em versões suficientemente novas de c%
pode aparecer em dígitos). (e#
só aparece nas diretrizes do pré-processador, mas teremos que conviver com isso)? Ou seja, estou pedindo que a abordagem de Matt seja explicitamente legal.#
,@
e `não são legais fora de qualquer tipo de literalRespostas:
Brainf * ck, 32 caracteres
Imprime um rosto sorridente (se o console puder gerar o símbolo ASCII 1)
Sim, uma solução Branf * ck que supera o Golfscript! : P
Se você insistir em nenhuma saída, basta trocar o
+
e.
:fonte
Perl, 32 caracteres
sem símbolos ocultos em comentários, literais de sequência ou expressões regulares. usa todos os símbolos precisamente uma vez.
Descrição
Eu tentei indicar precedência do operador com recuo: as expressões mais à direita são avaliadas antes daquelas à sua esquerda
fonte
`<@"^[(\{_},)]/+-~%'?&|:!*.=>
?$`
,@"
,%'
, e*.
(a escalar, array, hash e typeglob, respectivamente), mas é muito difícil ter certeza. . .Espaço em branco, 32
todos os caracteres que não são de espaço em branco são ignorados, então esse é realmente um programa vazio
fonte
Python 65
Eu usei os caracteres
?
e$
dentro de uma string literal. Esses caracteres não são válidos fora de literais ou comentários de string.fonte
{[`'"$?'`,]}
não é válido, pois cria um dicionário com uma chave sem valor associado. Você pode torná-lo válido com mais dois caracteres como este:{[`'"$?'`,]:0}
PHP, 32 caracteres
Provavelmente um pouco troll, este programa PHP também é um QUINE , e usa todos os símbolos na ordem exata em que estão listados.
Executado a partir da linha de comando, a saída será simplesmente o conteúdo do arquivo, pois não há
<?php
como chamar o intérprete.fonte
Perl 6 (43 caracteres)
Vamos definir um operador infix com um nome bastante incomum:
Não é literal nem literal em um ER ou qualquer coisa oculta em um comentário. Você não acredita em mim? A execução do seguinte programa produzirá "2":
Mas tenho certeza de que você vai estender ainda mais as regras para excluir a redefinição da própria linguagem, para nos tornar infelizes para os pervertidos. :(
fonte
Haskell, 53
Podemos tornar isso um pouco mais curto
45
no entanto, este programa não termina, e as utilizações mais caracteres (
'!'
,'<'
,'|'
) na infixa recém-definido.fonte
k (33 caracteres)
Muito fácil em k. Infelizmente
"
deve ser emparelhado.fonte
GolfScript (33 caracteres)
"
tem que ser emparelhado. Foram necessárias algumas tentativas e erros para não produzir nada - a maioria das outras posições do:'
resultado em alguma saída.fonte
J, 33 caracteres
'
precisa ser dobrado para evitar erros de sintaxe.Minha primeira resposta estava faltando alguns símbolos.
fonte
C, 48 caracteres
Tipo de trapaça.
fonte
#define Q(_) "##_##"
...char*c=Q(~''*+,-./:<=>?[]
| \); `. Nada em uma string, apenas é convertido em um ... Seria mais longo, é claro."";
), mas o$@
backtick parece sem esperança.#define Q(_) #_
. O pré-processador trataria"##_##"
como uma string literal.Postscript - 32 caracteres
Resulta em um objeto na pilha, mas, caso contrário, não tem efeitos. O Postscript permite quase qualquer caractere em um identificador, exceto pelos
<>()[]{}/
formulários especiais de sintaxe e%
que introduzem um comentário. O programa é tokenizado comofonte
C # (91 caracteres)
Até onde eu sei, o caractere $ não é um caractere válido fora dos literais da string, portanto não o usei na minha resposta.
EDIT : Graças a Peter Taylor , reduzi o código.
fonte
#if A
...#endif
é mais curto do que#region
...#endregion
. E"x"[0]+
é mais curto que[System.STAThread]
.PowerShell (52 caracteres)
Eu tive que colocar o caractere ^ como uma string literal, porque, até onde eu sei, o caractere ^ não é um caractere legal do PowerShell fora dos literais da string. Corrija-me se eu estiver errada.
A única maneira que encontrei para caber no caractere : é usar o operador :: para fazer uma chamada para um método estático.
fonte
Esquema, 41 caracteres
Isso tira proveito da incrível tolerância do Scheme para caracteres em nomes de variáveis. Neste programa, crio uma variável com o nome! $% & * +, -. /: <=>? @ [] ^ _ `{|} ~ Que Scheme aceita alegremente.
fonte
Tcl 37 chars
Define uma variável
!#$%&'()*+,-./:<=>?@[]^\_`|~
com uma sequência vaziafonte
C:
8356 caracteresOs sinais de arroba e as reticências não fazem parte da sintaxe C permitida, então eu os coloquei entre aspas.
fonte
(b)
? É uma sintaxe estranha e um desperdício de personagens.0.0
é muito menor.main(_,$)
vai salvar um personagem.x?:y
, mas não é padrão C.Lisp comum, 33 caracteres
A parte principal do item acima avalia (ou melhor, avaliaria se não fosse o que está
#+()
na frente dele) com o símbolo chamado:O
#+()
é para evitar a saída. Não tenho certeza se a|foo|
sintaxe dos símbolos conta como literal, mas os símbolos são usados como nomes de variáveis / funções no Common Lisp, e já existem algumas respostas usando os caracteres necessários.fonte
Smalltalk (Squeak 4.x dialeto) 38 caracteres
Implemente esse método em Object, a sintaxe será válida se Preferências permitir atribuição de sublinhado (que é a configuração padrão)
declare Z como var global no menu pop-up se interativo
Explicações:
Porra, quem disse que Smalltalk era legível?
Note que eu não trapaceie, o único caractere não válido `é colocado em um caractere literal. EDIT veja abaixo, esta foi uma afirmação falsa (pelo menos no Squeak)
Mas podemos reduzir para 34 caracteres com esse truque
Desta vez:
A rigor, podemos considerar isso como trapaça ... Não é uma String literal, mas ainda é uma literal não vazia ...
Ainda tenho que dobrar a citação de comentário "" (a menos que eu faça um caractere literal com $ ", mas preciso dobrar a citação de String '')
. Ainda preciso usar uma letra para o parâmetro (_ não é aceito, mesmo que definimos Preferências para permitir sublinhado no seletor como true).
O bom é que podemos até executar o método, por exemplo, envie a mensagem para 1 com o argumento 2:
EDIT Finalmente em 35 caracteres sem fazer batota
Notas:
fonte
R: 108 caracteres
Claramente, o envio mais longo, mas para poder usar símbolos
@
e$
em R, precisamos criar um objeto que tenha slots (indexados usando@
) e elementos nomeados (indexados usando$
).A solução mais curta que pude pensar foi criar uma nova classe de object (
a=new(setClass("a",representation(b="list")))
), que cobra seu preço. Caso contrário, separe dos clássicos que não precisam de explicações (como!=
,#
ou1:2
),cria um novo operador que faz o mesmo que o operador
?
(ou seja, chama a página de ajuda do elemento que antecede).%*%
calcula o produto interno de duas matrizes (aqui de1^1
e.1
).O símbolo
_
não faz nada (AFAIK) em R, mas é usado rotineiramente em nomes de variáveis ou funções, como é o caso aqui.fonte
TI-Basic, 36
fonte
End
finaliza uma instrução de loop, não o programa. Eu acho que você quis dizerReturn
.