A letra A sem A

69

Sua tarefa é exibir a letra "A" sozinha, sem mais nada, exceto qualquer forma de linha nova à direita se você não puder evitá-la, fazendo isso em um programa e / ou snippet. O código que retorna (em vez de imprimir) é permitido.

As versões em minúsculas e maiúsculas da letra "A" são aceitáveis ​​(ou seja, unicode U + 0061 ou unicode U + 0041. Outras codificações de caracteres que não são Unicode são permitidas, mas, de qualquer forma, a saída resultante do seu código deve seja a letra latina "A", e não quaisquer sósias ou homoglifos)

Você não deve usar nenhum dos caracteres abaixo em seu código, independentemente da codificação de caracteres escolhida:

  • " A ", em maiúsculas ou minúsculas.

  • " U ", em minúsculas ou maiúsculas.

  • X , seja em maiúsculas ou minúsculas.

  • +

  • &

  • #

  • 0 0

  • 1 1

  • 4

  • 5

  • 6

  • 7

  • 9

Trapaças, brechas, etc., não são permitidos.

Como esse é o , a solução mais curta, em bytes, que segue todas as regras, é a vencedora.


Verificador de validade

Este snippet de pilha verifica se o seu código não usa os caracteres restritos. Pode não funcionar corretamente para algumas codificações de caracteres.

var t = prompt("Input your code.");

if (/[AaUuXx+&#0145679]/.test(t)) {
  alert("Contains a disallowed character!");
} else {
  alert("No disallowed characters");
}

Este snippet de pilha que garante que você não tem um caractere não permitido também está disponível no JSFiddle .

Entre os melhores

Buffer Over Read
fonte
7
@ ColdGolf Parece que você está dizendo "sim" às funções, mas as funções não são exibidas, elas geralmente retornam.
Xnor
2
Está terminando com uma variável que atambém contém apenas o suficiente?
Ton Hospel
11
Isso não foi o que eu quis dizer. O suposto código que realiza uma atribuição de variável não conteria nenhum dos caracteres proibidos. Estou apenas tentando entender o que é coberto pela "exibição por outros meios que não a impressão". Se "retornar de uma função" estiver OK, o que dizer de "atribuir a uma variável"?
precisa saber é o seguinte
11
Por que esses personagens em particular?
usar o seguinte comando
7
@immibis Apor razões óbvias. Upara strings de escape Unicode ( \u0041is A), Xpara strings de escape hexadecimais ( \x41), +para ordinais Unicode ( U+0041), &para entidades HTML, #pois na verdade eu não sei, 65é o ordinal decimal de A, 41é o ordinal hexadecimal de A, 97é o ordinal decimal de ae 0por alguns dos motivos anteriores.
Mego

Respostas:

86

Além disso, 1 byte

o

Página Esolangs Pluso .

O Pluso contém um único acumulador, que começa com o valor 1. Ele usa dois comandos, p que incrementa o acumulador (mod 27), e o que imprime o valor atual como um caractere ASCII maiúsculo, AZ ou espaço (onde 1-26 representa AZ respectivamente e 0 representam espaço).

Como o acumulador começa em 1, o comando o sem prévia p vontade saída Uma .

cdw
fonte
14
Bem-vindo ao PPCG! Eu recomendaria colocar a explicação na sua resposta, caso o link acabe por qualquer motivo.
TheBikingViking 22/08/16
Explicação adicionada. Aguardando aprovação do moderador.
KPM
2
Obrigado pela recomendação (e pelas boas-vindas), atualizei minha resposta para incluir uma breve explicação.
CDW
Eu apenas votei para colocar você em 666 representantes. Me desculpe por isso.
Aidan F. Pierce
5
Isso não falha no teste "é um esolang" porque não pode fazer a verificação de primalidade?
Magic Octopus Urn
155

Python 2, 14 bytes

print`3<3`[~3]

A expressão 3<3fornece o booleano Falsee os backticks fornecem sua representação em cadeia 'False'. A partir daqui, resta extrair a carta a. O Python é indexado a 0, então o aestá no índice 1, que é um caractere proibido. Pode ser expresso como 3-2, mas há uma maneira mais curta. O Python permite a indexação pela parte de trás, com o índice -1da última entrada, -2da anterior e assim por diante. Queremos índice -4, mas 4também é um número proibido. Mas, podemos expressá-lo como ~3usar o bit de complemento ~, o que dá -n-1para ~n.

xnor
fonte
7
Essa é uma solução muito legal. Além disso, você não poderia fazer em [2]vez de [~3]?
DJMcMayhem
6
@DJMcMayhem Infelizmente, é 0 indexado [1].
Xnor
4
... por que são 1e 4números 'banidos' ??
Chris Cirefice
4
As regras do desafio dizem isso.
Xnor
20
Agora estou pensando em usar "~ 0" sendo lido como "primeiro elemento indexado zero por trás". Eu me pergunto por que usaria "-1" notação em Python ....
PascalVKooten
66

Pitão, 2 bytes

hG

Teste-o no Pyth Compiler .

Como funciona

 G  Yield the lowercase alphabet.
h   Extract the first character.
Dennis
fonte
48

PHP, 9 6 bytes

<?=O^_^Q;

Para 9 bytes: Inspirado na resposta de @Ton Hospel . Além disso, tem o benefício adicional de parecer um Kaomoji. :-)

A versão melhorada de 6 bytes:

<?=~¾;

em que ¾ possui o código hexadecimal de 0xBE (é importante salvar o arquivo na codificação Latin-1 , não UTF-8!).

YetiCGN
fonte
Uma versão alternativa é f^E^b.
Ismael Miguel
Sim, as soluções de 9 bytes são abundantes. Comecei com y ^ '8' e x ^ '9', infelizmente os números precisam ser convertidos em string ou será XOR o tipo resultante será um número inteiro.
precisa saber é o seguinte
23
+1 para o rosto^_^
Cyoce 21/08/16
A versão de 6 bytes não é impressa A. Imprime =A.
UTF-8
11
Agora eu sei a resposta para este enigma: em UTF-8, o código de código "fração três quartos" é codificado como dois bytes: 0xC2 0xBE , 0xBE sendo o mesmo da ISO-8859-1 . Percebi que, quando salvei isso em um arquivo na minha caixa Linux, que eu acessava via SSH com UTF-8, é claro, o arquivo tinha 7 bytes . Portanto, salve o script com a codificação Latin-1 e ele terá 6 bytes e não produzirá o =caractere.
YetiCGN
42

05AB1E, 3 2 bytes

Th

Explicação

T   # push 10
 h  # convert to hex

Experimente online

Guardado 1 byte graças a Adnan

Emigna
fonte
5
Thpara dois bytes :)
Adnan
11
@ Adnan Oh, é claro. Hex :)
Emigna
32

brainfuck, 16 bytes

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

Isso é baseado no algoritmo de troca de cérebro de Esolang para 159 .

Experimente online!

Dennis
fonte
3
Isso .... isso é magia.
Conor O'Brien
3
Esta solução usa a célula no índice -1, que não é suportada por todos os intérpretes que se preocupam com o cérebro e resultaria em uma falha. Você pode executá-lo aqui para ver fatiherikli.github.io/brainfuck-visualizer/...
Cody
37
@Cody No PPCG, os idiomas são definidos por sua implementação. Contanto que haja um intérprete que se comporte como desejado, é uma solução válida.
Dennis
3
Quão difícil foi para você evitar os personagens proibidos?
Hagen von Eitzen
11
@HagenvonEitzen Eu tive que cavar um pouco para encontrar um algoritmo que pudesse evitar +. (a maneira mais curta de imprimir A seria >+[+[<]>>+<+]>.), mas graças à lista de constantes em Esolang, não é muito difícil.
Dennis
30

JavaScript (ES6), 17 16 14 bytes

Economizou dois bytes graças a Neil!

_=>` ${-_}`[2]

Retorna o segundo caractere de NaN, que é a.

Este é o mais curto que eu pude imaginar A, 43 42 bytes:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Quem disse que ser um ofuscador não ajuda no código de golfe? Eu não!

Explicações

O primeiro, em profundidade.

_=>` ${-_}`[2]

-_é NaN, porque _é indefinido. Para obter isso como uma sequência, seria necessário um dos seguintes:

-_+""
`${-_}`
(-_).toString()

O último é muito longo e os primeiros usos +. Então, usamos o segundo. Agora, o aestá no índice 1. Isso não é bom, porque 1é proibido. No entanto, sendo uma string de modelo, podemos colocar um espaço lá para torná-lo no índice 2, deixando-nos assim ` ${-_}`.


O segundo, em profundidade.

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Este foi um doozy.

_=>`                                `[-~8]

Este é o nono caractere da sequência interna do modelo, -~8sendo igual a 9. Nesse caso, essa sequência do modelo é apenas para a stringificação. Esta é a equação interna que está sendo especificada, entre ${...}:

[][`constr${`${!_}`[2]}ctor`]

Vamos expandir um pouco isso:

(new Array())[`constr${`${!_}`[2]}ctor`]

Isso obtém a propriedade de uma matriz vazia. Essa propriedade é, obviamente, uma sequência de modelos, mas tem algum texto ao seu redor. É aproximadamente equivalente a:`constr${${!""}[2]}ctor`

"constr" + `${!_}`[2] + "ctor"

Por sua vez, o interior é equivalente a:

(!_).toString()[2]

!_é true(porque _é undefined, e !undefined === true) e é string "true". Temos o segundo caractere u,; temos que fazê-lo dessa maneira para evitar a inserção explícita de unosso código.

Portanto, esse bit interno é equivalente a:

"constr" + "u" + "ctor" === "constructor"

Portanto, estamos obtendo o construtor da matriz, a Arrayfunção Não pude deixar isso explícito porque contém o proibido A. Agora, restringir a Arrayfunção produz "function Array() { [native code] }".

Voltar ao código original:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Isso é equivalente a, como vimos:

_=>Array.toString()[-~8]

Equivalente a:

_=>Array.toString()[9]

Finalmente equivalente a:

_=>"A"
Conor O'Brien
fonte
11
@ColdGolf Está tudo bem.
Conor O'Brien
2
Seria contra os princípios de um ofuscador adicionar uma explicação ...? Estou curioso sobre como isso funciona.
Trichoplax
2
@trichoplax Suponho que não faria mal revelar meus métodos aqui;) adicionei uma explicação para ambos.
Conor O'Brien
11
@ OldBunny2800 Não aé um personagem proibida, e está em toUpperCase.
Conor O'Brien
3
Eu pensei que este era Perl no começo.
Οurous
29

Hexagonia , 4 bytes

Ayyy lmao? Muito golfe para um idioma não-golfe haha. Código:

B(;@

Experimente online!

Uma forma mais legível:

 B (
; @ .
 . .

Isso coloca o valor ASCII da letra B, que é 66, na borda da memória atual. Ele o substrata por um usuário (e o imprime com ;. Depois disso, o programa é finalizado usando @.

Imagem do caminho obrigatório:

insira a descrição da imagem aqui

Adnan
fonte
8
"mais legível" + hexagonia = ???
Não que Charles
18

Geléia , 3 bytes

ØWḢ

Experimente online!

Como funciona

ØWḢ  Main link. No arguments.

ØW   Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_".
  Ḣ  Head; extract the first character.

Gelatina, 4 bytes

l-ṾṂ

Experimente online!

Como funciona

l-ṾṂ  Main link. No arguments.

l-    Take the logarithm of 0 with base -1. Yields (nan+infj).
  Ṿ   Uneval; yield the string representation, i.e., "nanıinf".
   Ṃ  Take the minimum, returning 'a'.
Dennis
fonte
11
Pena que a segunda abordagem é mais longa. ._.
Dennis
6
Obrigado por incluir a segunda abordagem. É lindo
trichoplax
18

Na verdade , 2 bytes

úF

Experimente online!

Explicação:

úF
ú   lowercase English alphabet
 F  first element
Mego
fonte
você é o autor? Eu não vi esse idioma antes.
loa_in_
Eu já vi isso aparecer algumas vezes em desafios agora. Eu acho que tem o nome mais inteligente de qualquer um dos idiomas de golfe do site :-) Eu tenho assistido Suits ultimamente e acho que é muito Harvey.
precisa saber é o seguinte
17

CJam, 3 bytes

'@)

Experimente online!

Como funciona

'@   Push the character '@' on the stack.
  )  Increment its code point, yielding 'A'.
Dennis
fonte
12

Bubblegum , 1 byte

"

ou

B

Todo mundo parecia esquecer que existia ...

jimmy23013
fonte
Nunca usei Bubblegum antes, então talvez desculpe minha ignorância, mas onde posso encontrar os documentos para Bubblegum? Além disso, tentei o bubblegum.tryitonline.net com suas duas respostas, mas não parece produzir nada.
Kevin Cruijssen
11
Doc @KevinCruijssen: esolangs.org/wiki/Bubblegum TIO pareceu aceitar apenas o hexdump do código-fonte, para experimentá-lo como este: bubblegum.tryitonline.net/...
jimmy23013
Ah, esse é o meu problema; não usando o hexdump. Obrigado e +1 por ser o mais curto com uma resposta de byte único (associada ao Pluso).
Kevin Cruijssen
@KevinCruijssen Existe uma resposta Pluso de 1 byte. Porém, ele tem alguns problemas com uma regra de site estranha.
precisa saber é o seguinte
10

Perl, 9 8 bytes

xor ainda é permitido, mas saynão é. Assim, para 9 bytes:

print$/^K

No entanto, o uso da saída para STDERR fornece 8 bytes:

die~"\x9e\xf5"

Substitua \x9ee \xf5por suas versões literais. Ou gere o arquivo executável usando:

perl -e 'printf q(die~"%s"),~"a\n"' > a.pl
Ton Hospel
fonte
@ ColdGolf: Isso não está claro para mim. Você quer dizer que eu posso usar say(contém a) ​​para imprimir, desde que a construção do argumento não use os caracteres proibidos?
Ton Hospel
"No entanto, você não deve usar nenhum dos caracteres abaixo no seu código: * A, seja em maiúsculas ou minúsculas." A partir disso, eu teria print "No using the letter with code point 65";.
haykam
@ ColdGolf, isso significa responder à pergunta de alguma forma?
hobbs
10

> <> , 6 bytes

'|;o-$

isso cria uma sequência de caracteres, salta e cria novamente ao contrário, vira os 2 principais itens da pilha e subtrai: '|' (124) menos ';' (59) é «A» (65)

Experimente online

torcado
fonte
2
Agradável! Eu consegui o '$-o;|que é quase o mesmo, mas sem o salto. ( |;o-$'também funciona).
randomra
11
@randomra oh true! que iria correr mais rápido, tão bom trabalho
torcado
10

Ruby, 15 12 bytes

$><<to_s[-3]
Jordânia
fonte
11
Você pode salvar 2 bytes mudando $><<para p , makesp to_s[-3]
Ephi
O @Ephi pchama inspectseus argumentos, então a saída será citada, o que a desqualificaria.
Jordan
Eu perdi essa parte do desafio, eu vou deixar esses comentários como eu acho que é uma informação interessante :)
Ephi
10

Java, 55 bytes

void f(){System.err.write('c'-2);System.err.println();}

Como o código precisa imprimi-lo, é necessário um dos dois gravadores internos. System.outé, bem, fora, porque contém u. System.errfunciona, no entanto.

O próximo obstáculo é o manuseio de Java chare int. Como não é permitido converter para charporque contém ae porque 'c' - 2é promovido para int, outro mecanismo é necessário. System.erré a PrintWriter, que tem um write(char)método, mas não write(int). Colocar 'c' - 2lá o força charsem um elenco.

Finalmente, toda vez que eu executava o programa, o buffer System.errnão descarregava como deveria, e o programa não imprimia nada. Então eu tive que liberá-lo manualmente. No entanto, System.err.flush()não é permitido, então chamei o println()que implicitamente libera o fluxo subjacente.


fonte
9

MATL, 5 bytes

YNVH)

Experimente Online

Explicação

YN      % Creates a NaN value (not a number)
V       % Convert it to a string
H)      % Grab the second letter ('a')
        % Implicitly display the result

Minha resposta original foi a abordagem direta, usando o literal predefinido lY2que produz 'A'...'Z'e, em seguida, selecionando o primeiro elemento 'A',.

lY2l)
Suever
fonte
9

Javascript, 18 bytes 16 bytes 12 bytes 11 bytes

` ${!2}`[2]

Baseado em modificados jsfuck básico (tinha que descobrir como substituir +com -).

Ungolfed?

Bem, pelo menos uma versão com comentários (observe que essa versão provavelmente não será executada):

` ${      // whitespace to make "a" the third letter
  !2      // returns false
}`        // convert to string "false"
[2]       // index the third letter in " false" (note the whitespace)

Solução antiga:

`${![]}`[-(-!![])]
slebetman
fonte
Você pode substituir o parêntese por um espaço entre os sinais de menos.
precisa saber é o seguinte
@ Pietu1998: Notei que 3é permitido por isso substituiu a coisa toda com velho chato 3-2para obter1
slebetman
Salvo um byte graças a Conor O'Brien resposta
slebetman
11
Sem ofensa, mas essa é a minha resposta. Exceto que você usa false em vez de NaN e não usa uma função.
Conor O'Brien
8

Vim, 16 13 11 10 pressionamentos de tecla

Agradecimentos a H Walters por salvar duas chaves

Obrigado ao DJMcMayhem por salvar outro!

:h%<cr>jvyZZp
:h%<cr> #open help for percent
jvy     #move down one char (to the letter "a"), visual mode the character, yank
ZZ      #exit help for percent
p       #put yanked character
Limão destrutível
fonte
Abordagem muito agradável!
precisa saber é o seguinte
2
Economize 3 bytes; em vez de :h<cr>tentar :h%<cr>. Esse é um caractere extra, mas você acaba ajudando %, com o cursor sobre um a. Então a partir daqui você pode substituir 33llpor j.
H Walters
Apologias de erro de digitação óbvio (salvar 2 bytes)
H Walters
Você pode usar em ZZvez de :q<cr>salvar outro.
DJMcMayhem
8

R, 27 12 bytes

EDIT: Nova versão, com uma excelente ideia de @Jarko Dubbeldam

LETTERS[T*T]

Um desafio bastante engraçado!

Basicamente, isso pega o 26thelemento do vetor invertido que contém as letras maiúsculas ( LETTERSque é o vetor interno do R )

Versão anterior s (mesmo número de bytes) :

L=LETTERS;rev(L)[length(L)]
rev((L=LETTERS))[length(L)]
Frédéric
fonte
11
Um pouco tarde, mas você pode economizar um pouco com LETTERS[T*T]. Tavalia 1quando realiza operações numéricas.
JAD
Encontrei uma solução mais curta!
18717 Giuseppe
Esta não é tecnicamente uma solução --- ele imprime '[1] "a"', em vez de apenas 'a'
JDL
8

> <> , 7 4 bytes

Economizou 3 bytes graças ao Teal pelican

"-o.

Experimente online!

Explicação

"-o."   # pushes the string "-o."
-       # subtracts the charcode of o from the charcode of . (dot), 111-46=65
o       # prints as character
.       # tries to pop 2 coordinates to jump to, but as nothing is left on the stack
        # the program ends in an error
Emigna
fonte
Eu teria feito"B"1-o;
DanTheMan
@ DanTheMan Essa deveria ter sido a solução mais óbvia. Eu me pergunto por que não pensei nisso: P
Emigna
@ DanTheMan: - Indo para o que Dan postou, você pode reduzir ainda mais isso; "1-o; B ou até melhor" + o; & como em ambos os casos é permitido fazer 5 bytes :) - você pode fazer 4 bytes com um erro; "-o.
Teal pelican
@Tealpelican: Isso é brilhante! Usando cordas são muitas vezes mais curto em desafios como estes, mas eu nem sequer considerar que :)
Emigna
Uma vez eu vi o comentário de Dan me fez lembrar de um desafio mais velha como esta assim apenas utilizado o mesmo conceito :)
Teal pelicano
7

Vim, 2 pressionamentos de tecla

vim -u NONEem seguida, execute o seguinte ( -u NONEdesativa a personalização)

i<up>

Quando o vim é executado no modo compatível, as teclas de seta não são interpretadas corretamente. <up>é interpretado, <esc>OAdeixando o seguinte no modo de inserção. O que sairia (com algumas linhas novas à direita)

A

iinicia o modo de inserção.
<up>sai do modo de inserção, abre uma linha acima e insere A no buffer

Exemplo de pessoas que encontram isso na natureza. https://stackoverflow.com/questions/6987317/ while-moving-the-cursor-across-a-vim-process-open-in-a-tmux-session-every-now-a/6988748#6988748

FDinoff
fonte
Eu ri ao ler. Este é um bom trabalho. Grande armamento de algo que eu sei, mas não teria pensado.
Udioica 13/10/16
6

Brainfuck, 192 19 bytes

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

Obrigado a @NinjaBearMonkey por me ajudar a salvar hella bytes

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------------------------.

Eu não sou bom em Brainfuck, então tenho certeza de que há uma solução mais curta, mas funciona diminuindo abaixo de 0, rolando o byte e continuando até que ele desça para 'A' e depois imprima.

Cody
fonte
11
não é um concorrente sério. Se você realmente jogar golfe, o rebaixador pode inverter o voto deles / delas
Destructible Lemon
Não seria muito mais curto contar até 65, mesmo com 65 pontos positivos?
NinjaBearMonkey
2
'+' Não é permitido, então eu tive que ir para trás
Cody
Desculpe, eu não vi isso. Ainda há maneiras muito mais curtas de fabricar o 191 .
NinjaBearMonkey
2
Essa foi a solução 192 byte, eu só deixou-se e fez o tachado em vez de excluí-lo, porque eu pensei que era engraçado vai 192-19
Cody
6

JavaScript (ES6), 21 bytes

_=>(8^2).toString(22)

Originalmente, tentei converter falsepara string para fazer isso, mas levei 23 bytes no momento. Desde então, criei uma maneira mais curta, que é isso para 14 bytes:

_=>`!${!2}`[2]

Eu não acho que você pode obter uma maiúscula de Aacordo com as regras, já que você precisa de um String.fromCharCodeou dos .toUpperCase()dois a.

Neil
fonte
Você pode obter maiúsculas um usando JSF ou um derivado usando propriedades computadas
Downgoat
11
@Downgoat Conor O'Brien já mostrou como.
Neil
6

C, (19?) 24 bytes

Graças a Dennis:

f(){printf("%c",88-23);}

Mesmo comprimento:

f(){printf("%c",'C'-2);}

que também permite minúsculas:

f(){printf("%c",'c'-2);}

Há uma solução de 19 bytes como uma função que modifica seu parâmetro, que possui uma falha:

g(int*p){*p='C'-2;}

//Usage:

main(){
  int c; //cannot be char
  g(&c);
  printf("%c\n",c);
}

Se cfoi declarado char, gmodifica o todo intpara esmagar a pilha que faz com que outros valores sejam modificados ou o programa seja interrompido com uma mensagem de erro. A única maneira de contornar é declarar int c;em maine imprimir com "%c", mas que se sente como uma brecha.

soluções mais antigas

f(){printf("%c",'B'-2/2);} //26 bytes
f(i){i='B';printf("%c",--i);} //29 bytes
f(){int*i="B";int j[]={*i-(2/2),2-2};printf("%s",j);} //53 bytes

Apenas uma função, uma vez que mainé proibido.

Karl Napf
fonte
3
88-23deve salvar alguns bytes.
Dennis
Para letras minúsculas a, você pode usar (333-33) / 3-3. Não é tão curto quanto 'c'-2, mas é 3er. 33 * 3-2 também é possível.
rici 20/08/16
Se você usar write () em vez de printf, poderá torná-lo um programa; especifique as etapas de compilação para garantir que você não vincule nenhum libc; se não houver _start, o primeiro símbolo é pulado e _exit é permitido, portanto é seguro. Pelo menos uma versão do gcc otimizará write () no syscall direto sem nenhuma chamada de função.
Joshua
Dependendo do seu IDE, você pode fazer algo assim: printf("%c",~'ɦ');embora o "A" tenha um acento adicionado, heh
Albert Renshaw
@AlbertRenshaw ɦé um 2-byte caracteres
Karl Napf
6

dc, 4 bytes

833P

O estouro de UCHAR_MAX rola pela tabela seis três vezes antes de pousar aos 65 anos.

brhfl
fonte
6

Lua, 36 bytes

Este levou-me um tempo desde que muitas das funções padrão de Lua são tomadas longe das regras (todas math, string.char, string.match, pairs, mesmo next)

Isso tira vantagem do fato de Lua ter um global _VERSIONque geralmente começa com "Lua" (por exemplo, Lua 5.1ou similar para outras versões); portanto, a menos que isso seja executado em um intérprete não convencional, o terceiro caractere será um 'a'

print(({_VERSION:find("..(.)")})[3])

O {...}[3]é agrupar os resultados dos findquais também inclui os índices em que correspondeu e retornar o terceiro item que é o caractere correspondente (o a)

PiGuy
fonte
11
print(({type{}:find".(.)"})[3]) 31 bytes
Egor Skriptunoff
6

Haskell, 10 bytes

Como uma função (ou melhor, uma declaração, pois nenhuma entrada é necessária)

f=pred 'B'

faz o truque. Experimente em Ideone. Um programa completo é impossível, pois isso precisa conter a main.

Laikoni
fonte
Eu não acho que isso seja válido. A tarefa requer "imprimir" ou "exibir" A. Suas funções apenas o retornam e o programa vinculado o exibe através de putCharquais usos u.
nimi
Você está certo, no entanto, as regras foram atualizadas e agora o retorno de uma função parece estar ok.
Laikoni
Não, as regras ainda dizem printe / ou display.
nimi
2
Dennis perguntou explicitamente se o retorno de uma função em vez de impressão está ok e o OP respondeu com sim, mas o texto atualizado da pergunta posteriormente ainda não reflete isso. Acho que ainda precisamos esperar mais esclarecimentos.
Laikoni
11
O OP confirmou que Adeve ser impresso / exibido e não retornado.
nimi
5

dc, 8 7 bytes

-1B graças a Dennis

88 23-P

Empurra 88, empurra 23, subtrai, deixando 65. Imprima a parte superior da pilha (65) como uma string ASCII, sem uma nova linha à direita.

Editar:

Estas são algumas das outras maneiras pelas quais inventei. Basicamente, tornou-se um jogo de "gerar os números 65 e 97 usando apenas [238B-F]e sem adição". Ironicamente, acho os mais longos mais interessantes.

_Fdd/r-oC 2-n  # involves changing the base
2_2/8d*3*2/-P
Idd2/2/-2*on   # also changes base
2d8r^r_2/-P
8d*2_2/-P
B 3d**2-P
33 3*2-P
Joe
fonte