Aのない手紙A


69

あなたの仕事は、文字「A」を単独で表示することであり、プログラムやスニペットでそうすることを避けられない場合、後続の改行の形を除いて、何も表示しません。(印刷の代わりに)戻るコードが許可されます。

文字「A」の小文字と大文字の両方が受け入れられます(つまり、ユニコードU + 0061またはユニコードU + 0041です。ユニコードではない他の文字エンコードは許可されますが、どちらにしても、コードの結果出力はラテン文字「A」であり、類似またはホモグリフではない)

あなたは必要がありません関係なく、あなたが選ぶ文字エンコーディングの、あなたのコードで以下のいずれかの文字を使用します。

  • A」、大文字または小文字。

  • U」、小文字または大文字。

  • X(大文字または小文字)。

  • +

  • 0

  • 1

  • 4

  • 5

  • 6

  • 7

  • 9

不正行為、抜け穴などは許可されません。

これはであるため、すべての規則に従う最短の解決策(バイト単位)が勝者です。


有効性チェッカー

このスタックスニペットは、コードが制限された文字を使用していないことを確認します。一部の文字エンコーディングでは適切に動作しない場合があります。

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

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

許可されていない文字がないことを確認するこのスタックスニペットは、JSFiddleでも利用できます。

リーダーボード


7
@ColdGolf関数に「はい」と言っているように見えますが、関数は表示されず、通常は戻ります。
-xnor

2
を含む変数で終わるだけaでも十分ですか?
トンホスペル

1
そういう意味じゃない。変数の割り当てを行う想定コードには、禁止文字は含まれていません。「印刷以外の手段による表示」でカバーされているものを理解しようとしています。「関数からの戻り」で問題なければ、「変数への代入」はどうですか?
トンホスペル

1
なぜそれらの特定のキャラクターですか?
user253751

7
A明らかな理由で@immibis 。UUnicodeエスケープ文字列(\u0041is A)、X16進エスケープ文字列(\x41)、+Unicode序数(U+0041)、&HTMLエンティティ、#実際にはわからないため、65の10進数の序数A41は16進数の序数A97は10進数の序数a、および0以前のいくつかの理由があります。
メゴ

回答:


86

Pluso、1バイト

o

プラソエソランズページ

Plusoには、値1で始まる単一のアキュムレーターが含まれています。2つのコマンドを使用します。pはアキュムレーターをインクリメントし(mod 27)、oは現在の値を大文字のASCII文字、AZまたはスペース(1-26を表す)として出力しますそれぞれA〜Z、0はスペースを表します)。

アキュムレータは1から始まるため、前にpがないコマンドoAを出力します。


14
PPCGへようこそ!何らかの理由でリンクが切れた場合に備えて、回答に説明を入れることをお勧めします。
TheBikingViking

説明を追加しました。モデレーターの承認を待っています。
KPM

2
推奨(および歓迎)に感謝し、簡単な説明を含めるように回答を更新しました。
cdw

私はあなたを666 repに置くことに賛成しました。ごめんなさい
エイダンF.ピアース

5
これは、素数チェックを実行できないため、「エソランである」テストに失敗しませんか?
魔法のタコUr

155

Python 2、14バイト

print`3<3`[~3]

3<3はブール値を与え、Falseバックティックはその文字列表現を与えます'False'。ここから、文字を抽出することが残っていaます。Pythonは0でインデックス付けされているため、aindex 1にあります。これは禁止文字です。として表現できます3-2が、もっと短い方法があります。Pythonでは-1、最後のエントリ、その前のエントリなどのインデックスを 使用して、後ろからインデックスを作成できます-2。index -4が必要ですが、これ4も禁止番号です。しかし、我々はとしてそれを表現することができ~3、ビット補数使用して~います、-n-1のために~n


7
それは本当にクールなソリューションです。また、[2]代わりにできませんでした[~3]か?
DJMcMayhem

6
@DJMcMayhem残念ながら0インデックスが付けられているため、が必要になります[1]
xnor

4
...なぜある14数字を「禁止」??
クリスクレフィス

4
チャレンジのルールはそう言っています。
xnor

20
「ゼロからインデックス付けされた最初から最初の要素」として読み取られる「〜0」の使用を検討しています。Pythonで「-1」表記を使用するのはなぜだろうか
。...-PascalVKooten


48

PHP、9 6バイト

<?=O^_^Q;

9バイトの場合:@Ton Hospelの回答に触発されました。さらに、顔文字に少し似ているという利点もあります。:-)

6バイトの改良バージョン:

<?=~¾;

¾は0xBEの16進コードを持ちます(ファイルをUTF-8 ではなくLatin-1エンコーディングで保存することが重要です!)。


代替バージョンはf^E^bです。
イスマエルミゲル

はい、9バイトのソリューションは豊富です。私はy ^ '8'とx ^ '9'で始めましたが、残念ながら数字を文字列にキャストする必要があります。そうしないと、結果の型が整数になります。
YetiCGN

23
顔の+1^_^
チョイス

6バイトバージョンは印刷しませんA。印刷し=Aます。
UTF-8

1
私はこの謎に対する答えを知っています:UTF-8では、「分数3四半期」コードポイントは2バイトとしてエンコードされます:0xC2 0xBE、0xBEはISO-8859-1と同じです。これをLinuxボックスのファイルに保存すると、当然UTF-8を使用してSSH経由でアクセスしますが、ファイルは7バイトです。したがって、スクリプトをLatin-1エンコードで保存すると、6バイトになり、=文字は出力されません。
YetiCGN


32

brainfuck、16バイト

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

これは159のEsolangのBrainfuckアルゴリズムに基づいています。

オンラインでお試しください!


3
これ....これは魔法です。
コナーオブライエン

3
このソリューションでは、インデックス-1のセルを使用します。これは、すべてのBrainfuckインタープリターでサポートされておらず、クラッシュする可能性があります。ここで実行すると、fatiherikli.github.io / brainfuck
コーディ

37
@Cody PPCGでは、言語は実装によって定義されます。希望どおりに動作するインタープリターが1つある限り、それは有効なソリューションです。
デニス

3
禁じられたキャラクターを避けるのはどれくらい大変でしたか?
ハーゲンフォンアイゼン

1
@HagenvonEitzenを回避できるアルゴリズムを見つけるために少し掘り下げなければなりませんでした+。(Aを印刷する最短の方法は>+[+[<]>>+<+]>.)ですが、Esolangの定数のリストのおかげで、それほど難しくありません。
デニス

30

JavaScript(ES6)、17 16 14バイト

ニールのおかげで2バイト節約できました!

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

2番目の文字を返しNaNています、a

これはA43 42バイトで考えられる最短です:

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

難読化者になってもコードゴルフは役に立たないと言うのは誰ですか?私ではない!

説明

深さの最初のもの。

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

-__未定義なのでNaN です。これを文字列として取得するには、次のいずれかが必要です。

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

最後のものは長すぎ、最初のものはを使用し+ます。したがって、2番目のものを使用します。現在、aはindexにあります11禁止されているため、これは何の役にも立ちません。ただし、テンプレート文字列であるため、そこにスペースを入れてindex 2に置くことができ` ${-_}`ます。


2つ目は、深さです。

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

これはすごかった。

_=>`                                `[-~8]

これは、内部テンプレート文字列の9番目の文字で、9 -~8に等しくなります。この場合、このテンプレート文字列は文字列化のためだけです。これは、次の中間にある文字列化された内部方程式${...}です。

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

これを少し拡張してみましょう。

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

これは、空の配列からプロパティを取得します。もちろん、このプロパティはテンプレート文字列ですが、周囲にテキストがあります。それはおおよそ次のものと同等です:`constr${${!""}[2]}ctor`

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

内部は次と同等です:

(!_).toString()[2]

!_であるtrue(ので_ありundefined、そして!undefined === trueれる)、および文字列化"true"。2番目の文字を取得しuます; uコードを明示的に配置しないようにするには、この方法で取得する必要があります。

したがって、この内部ビットは次と同等です。

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

そのため、配列のコンストラクターであるArray関数を取得しています。禁止されているが含まれているため、これを明示的に置くことはできませんでしたA。ここで、Array関数を文字列化するとが得られ"function Array() { [native code] }"ます。

元のコードに戻る:

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

これは、見てきたとおり、次と同等です。

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

に相当:

_=>Array.toString()[9]

最終的に次と同等:

_=>"A"

1
@ColdGolf大丈夫です。
コナーオブライエン

2
説明を追加するのは難読化者の原則に反するでしょうか...?これがどのように機能するのか興味があります。
センモウヒラムシ

2
@trichoplax私のメソッドをここで公開しても害はないと思います;)両方の説明を追加しました。
コナーオブライエン

1
@ OldBunny2800 No. aは禁止されたキャラクターであり、toUpperCaseです。
コナーオブライエン

3
これは最初はPerlだと思っていました。
Οurous

29

六角形、4バイト

Ayyy lmao?非ゴルフ言語の母のためにかなりゴルフ。コード:

B(;@

オンラインでお試しください!

より読みやすいフォーム:

 B (
; @ .
 . .

これにより、文字のASCII値B66が現在のメモリエッジに配置されます。それを使用して1つ減算し(、で印刷し;ます。その後、を使用してプログラムが終了し@ます。

絶対パス画像:

ここに画像の説明を入力してください


8
「読みやすい」+ヘキサゴニー= ???
チャールズ

18

ゼリー、3 バイト

ØWḢ

オンラインでお試しください!

使い方

ØWḢ  Main link. No arguments.

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

ゼリー、4バイト

l-ṾṂ

オンラインでお試しください!

使い方

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'.

1
残念なことに、2番目のアプローチは長くなります。._。
デニス

6
2番目のアプローチを含めてくれてありがとう。それは美しいです
センモウヒラムシ



12

バブルガム、1バイト

"

または

B

誰もがそれが存在することを忘れているようでした...


これまでBubblegumを使用したことがないので、おそらく私の無知を許しますが、Bubblegumのドキュメントはどこにありますか?また、あなたの両方の答えでbubblegum.tryitonline.netを試しましたが、何も出力されないようです。
ケビンCruijssen

1
@KevinCruijssenドク:esolangs.org/wiki/Bubblegum TIOは、ソースコードの唯一のhexdumpに対してを受け入れるので、このようにそれを試すように見えた:bubblegum.tryitonline.net/...
jimmy23013

ああ、それが私の問題です。hexdumpを使用していません。1バイトの回答で最短であったことに感謝し、+ 1(Plusoと結び付けられています)。
ケビンCruijssen

@KevinCruijssen 1バイトのPlusoの回答があります。ただし、奇妙なサイトルールにはいくつかの問題があります。
jimmy23013

10

Perl、9 8バイト

xorは引き続き許可されますが、許可されsayません。したがって、9バイトの場合:

print$/^K

ただし、STDERRへの出力を使用すると8バイトになります。

die~"\x9e\xf5"

交換する\x9e\xf5そのリテラルのバージョンで。または、次を使用して実行可能ファイルを生成します。

perl -e 'printf q(die~"%s"),~"a\n"' > a.pl

@ColdGolf:それは私には明らかではありません。私が使用することができ、あなたが意味するかsay(含まa)は、禁止文字を使用しない引数の建設限り、印刷するための?
トンホスペル

「ただし、コードでは以下の文字を使用しないでください。* A、大文字でも小文字でも。」それから、私はprint "No using the letter with code point 65";
haykam

@ColdGolfは、何らかの方法で質問に答えるためのものですか?
ホッブズ

10

> <>、6バイト

'|;o-$

これにより、文字列が作成され、バウンスされて再び逆に作成され、上位2つのスタックアイテムが反転され、減算されます: '|' (124)マイナス ';' (59)は 'A'(65)

オンラインで試す


2
いいね!私が得た'$-o;|、ほぼ同じですが、バウンスなしです。(|;o-$'も動作します。)
randomra

1
@randomraまさか!それは間違いなくより速く実行されるので、素晴らしい仕事
-torcado

10

ルビー、15 12バイト

$><<to_s[-3]

1
あなたは2つのバイトを変更保存することができます$><<p 、作るp to_s[-3]
EPHI

@Ephi pinspect引数を呼び出すため、出力は引用符で囲まれ、失格になります。
ヨルダン

私は挑戦のその部分を逃しました、私はそれが面白い情報だと思うのでそれらのコメントを聞かせます:)
エフィ

10

Java、55バイト

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

コードはそれを印刷する必要があるため、2つの組み込みライターの1つが必要です。System.outが含まれてuいるためです。System.errただし、動作します。

次のハードルは、Javaのの取り扱いであるcharintcharに含まれているためにキャストできないaため、'c' - 2に昇格されるためint、別のメカニズムが必要です。System.errあるPrintWriter持っている、write(char)方法がなくwrite(int)'c' - 2そこに置くとchar、キャストなしで強制されます。

最後に、プログラムを実行するたびに、バッファーSystem.errが想定どおりにフラッシュされず、プログラムは何も出力しませんでした。そのため、手動でフラッシュする必要がありました。ただし、System.err.flush()許可されていないため、呼び出しprintln()て暗黙的に基本ストリームをフラッシュします。


9

MATL、5バイト

YNVH)

オンラインで試す

説明

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

私の最初の答えは、最初の要素lY2を生成'A'...'Z'して選択する定義済みリテラルを使用した単純なアプローチでした'A'

lY2l)

9

Javascript、18バイト 16バイト 12バイト 11バイト

` ${!2}`[2]

修正されたjsfuckの基本に基づいています(置き換える方法を理解する必要がありまし+-)。

ゴルフをしていない?

少なくともコメント付きのバージョン(このバージョンはおそらく実行されないことに注意してください):

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

古いソリューション:

`${![]}`[-(-!![])]

括弧をマイナス記号の間のスペースに置き換えることができます。
PurkkaKoodari

@ Pietu1998:私はそれを気づいた3ので、退屈な古いと全体を置き換える許可されている3-2取得する1
slebetman

コナー・オブライエンの答えに保存された1バイトのおかげ
slebetman

1
ああ、犯罪はありませんが、これはほとんど私の答えです。NaNの代わりにfalseを使用し、関数を使用しないことを除いて。
コナーオブライエン

8

Vim、16 13 11 10キーストローク

2つのキーを保存してくれたH Waltersに感謝

別のものを保存してくれたDJMcMayhemに感謝します!

: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

とてもいいアプローチです!
YetiCGN

2
3バイト節約します。代わりに:h<cr>、試してください:h%<cr>。これは1つの余分な文字ですが%、aの上にカーソルを置くと、のヘルプが表示されます。だからここから、あなたは置き換えることができ33llj
H・ウォルターズ

明らかなタイプミスの謝罪(2バイトを節約)
Hウォルターズ

ZZ代わりに:q<cr>を使用して、別のものを保存できます。
DJMcMayhem

8

R、27 12バイト

編集: @Jarko Dubbeldamの素晴らしいアイデアからの新しいバージョン

LETTERS[T*T]

かなり面白いチャレンジ!

基本的に、これは26th大文字を含む反転ベクトルの要素を取ります(LETTERS、これはRの組み込みベクトルです)

以前のバージョンs(同じバイト数)

L=LETTERS;rev(L)[length(L)]
rev((L=LETTERS))[length(L)]

1
少し遅れますが、でかなり節約できますLETTERS[T*T]。数値演算を行うときにT評価し1ます。
-JAD


これは技術的には解決策ではありません--- 'a'ではなく '[1] "a"'を出力します
JDL

8

> <>7 4バイト

ティールペリカンのおかげで3バイト節約

"-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

私が行っているだろう"B"1-o;
DanTheMan

@DanTheManそれはもっと明白な解決策だったはずです。なぜ私はそれを考えなかったのだろうか:P
エミグナ

@DanTheMan:-ダンが投稿したものから離れると、これをさらに減らすことができます。"1-o; Bまたはさらに良い" + o;&どちらの場合もこの5バイトを作成できます:)-エラーが発生しても4バイトにすることができます。「-o。
ペリカンティール

@ティールペリカン:それは素晴らしい!これらのような課題では、文字列の使用が最も短いことがよくありますが、私はそれも考慮していませんでした:)
エミグナ

ダンのコメントを見ると、これと同じような古いチャレンジを思い出したので、同じコンセプトを使用しました:)
ティールペリカン

7

Vim、2キーストローク

vim -u NONE次に、以下を実行します(-u NONEカスタマイズをオフにします)

i<up>

vimが互換モードで実行されている場合、矢印キーは正しく解釈されません。挿入モードで次の<up>もの<esc>OAを残す解釈されます。あと何行か(後続の改行がいくつかあります)

A

i挿入モードを開始します。
<up>挿入モードを終了し、上の行を開き、Aをバッファに入力します

野生でこれに遭遇する人々の例。https://stackoverflow.com/questions/6987317/while-moving-the-cursor-across-a-vim-process-open-in-a-tmux-session-every-now-a/6988748#6988748


私はそれを読んで笑った。これは良い仕事です。私が知っているが、考えもしなかった何かの素晴らしい兵器化。
udioica

6

Brainfuck、192 19バイト

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

hellaバイトを節約できる@NinjaBearMonkeyに感謝

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------------------------。

私はBrainfuckが苦手なので、もっと短い解決策があると確信していますが、0未満にデクリメントし、バイトをロールオーバーし、「A」に到達するまで続けて印刷します。


1
深刻な競争相手ではありません。あなたは、実際にゴルフそれを、downvoterは彼らの票を反転可能性がある場合
破壊可能なレモン

65個のプラスを使用しても、最大65個までカウントする方がはるかに短くないでしょうか?
-NinjaBearMonkey

2
「+」は許可されていないため、後方に移動する必要がありました
コーディ

申し訳ありませんが、私はそれを見ませんでした。191を作成する方法はまだはるかに短いです。
NinjaBearMonkey

2
それは、192バイトのソリューションだった私はそれが192から19に行く面白いと思ったので、私はちょうどそれを残し、代わりにそれを削除する取り消し線をやった
コーディ

6

JavaScript(ES6)、21バイト

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

私はもともとfalseこれを行うために文字列に変換しようとしましたが、そのとき23バイトかかりました。私はその後、より短い方法を考え出しました。これは14バイトの場合です:

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

またはの両方が含まれているA必要があるため、ルールの下で大文字を取得できるとは思わない。String.fromCharCode.toUpperCase()a


あなたは使用してJSFまたは誘導体を使用して計算されたプロパティ大文字得ることができます
Downgoat

1
@Downgoat Conor O'Brienはすでにその方法を示しました。
ニール

6

C、(19?)24バイト

デニスのおかげで:

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

同じ長さ:

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

小文字も有効にします:

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

パラメータを変更する関数として19バイトのソリューションがありますが、これには欠陥があります。

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

//Usage:

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

場合c宣言されたcharg全体を変更しint、それが他の値を変更させるか、プログラムの開発は、エラーメッセージを表示して中止するスタックを砕くように。を回避する唯一の方法はで宣言int c;してmainで印刷すること"%c"ですが、それは抜け穴のように感じます。

古いソリューション

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

main禁止されているため、単なる機能です。


3
88-23数バイト節約できます。
デニス

小文字のaには、(333-33)/ 3-3を使用できます。「c」-2ほど短くはありませんが、3erです。33 * 3-2も可能です。
リチ

printfの代わりにwrite()を使用すると、プログラムにすることができます。ビルド手順を指定して、libcにまったくリンクしないようにします。_startがない場合、最初のシンボルにジャンプし、_exitが許可されるため、安全です。gccの少なくとも1つのバージョンは、関数呼び出しをまったく行わずに、直接syscallへのwrite()を最適化します。
ジョシュア

お使いのIDEによっては、このような何かを行うことができます:printf("%c",~'ɦ');、アクセントマークがあわや追加「」しているでしょうが
アルバート・レンショウ

@AlbertRenshawがɦ2バイト文字である
カールNAPF

6

dc、4バイト

833P

UCHAR_MAXオーバーフローがテーブルを介してロール6 65に着陸する前に三回。


6

Lua、36バイト

標準のLuaの関数の多くは、ルールから離れて撮影されているので、この1は私にしばらく時間がかかった(すべてmathstring.charstring.matchpairs、でもnext

これは、Luaが_VERSION通常「Lua」で始まるグローバル(例えば、Lua 5.1他のバージョンでは、または同様)を利用しているため、これが非メインストリームインタープリターで実行されない限り、3番目の文字は「a」

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

{...}[3]グループの結果であり、findまた、それが一致したインデックスを含む、次に一致する文字(ある3番目の項目を返しますa


1
print(({type{}:find".(.)"})[3]) 31バイト
Egor Skriptunoff

6

Haskell、10バイト

関数として(または、入力が不要なステートメント)

f=pred 'B'

トリックを行います。Ideoneでお試しください。 完全なプログラムは、これを含む必要があるため不可能mainです。


私はこれが有効だとは思わない。タスクは「印刷」または「表示」する必要があります A。あなたの関数は単にそれを返し、リンクされたプログラムはputCharを使用してそれを表示しますu
-nimi

あなたは正しいですが、ルールは更新されており、関数から戻ることは大丈夫のようです。
ライコニ

いいえ、ルールはまだprintと/またはと言っていますdisplay
nimi

2
デニスは、印刷の代わりに関数から戻ることは大丈夫かどうかを明示的に尋ね、OPはイエスと答えましたが、質問のその後に更新された文言はまだこれを反映していません。私たちはまださらなる説明を待つ必要があると思います。
ライコニ

1
OP Aは、印刷/表示し、返品しないことを確認しました。
nimi


5

dc、 8 7バイト

デニスのおかげで-1B

88 23-P

88をプッシュし、23をプッシュし、65を残して減算します。スタックの先頭(65)をASCII文字列として出力します。末尾の改行はありません。

編集:

これらは私が思いついた他の方法のいくつかです。基本的には、「[238B-F]追加のみを使用して、番号65および97を生成する」ゲームになりました。皮肉なことに、私は最も長いものを最も面白くしています。

_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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.