使用せずにすべての印刷可能なASCII文字を印刷する


56

では、プログラミング言語お好みの、別の1出力、それぞれが95のプログラム、書き込み95個の印刷可能なASCII文字を プログラム内のどこにでも発生して、その文字なしを

あなたの言語であった場合たとえば、Pythonの、文字を出力し、あなたのプログラムがPあるかもしれません

print(chr(80))

PASCIIコード80を持っているためです。このプログラムはP、ソースコードに表示されないため有効です。ただし、小文字を出力するプログラムのp場合は

print(chr(112))

それは、印刷を行いながら、ために無効になりppコードの中に存在しています。有効なプログラムは

exec(chr(112)+'rint(chr(112))')

これは印刷さppますが、含まれません。

あなたの目標は、あなたの95のプログラムのそれぞれをできるだけ短くすることです。あなたのスコアはすべてのプログラムの文字の長さの合計です。

何らかの理由で一部の文字に対して有効なプログラムを作成できない場合、それらの文字を「Did Not Program」またはDNPとしてマークし、それらのプログラムを完全に省略できます。これにより、構文的に厳密な言語が競争できるようになります。

勝利の答えは、最も低いスコアがある答えである最も少ないDNPの持っている回答のセットを。

ルール

  • すべてのプログラムのソースコードには、印刷可能なASCIIに加えてタブと改行のみを含めることができます。これらはすべて1文字としてカウントされます。(異なるエンコーディングでは、存在しない文字を簡単に省略できるためです!)

    • 注:このルールは必要なようですが、エンコードが異なる言語がたくさんあるので、それらの答えを見るのはクールだと思います。したがって、このルールを破ることができますが、あなたは好きな文字を使用できますが、あなたの答えは非競争的になり、勝つことはできません。
  • プログラムは、言語の標準的な規則に従って、実際の完全なプログラムでなければなりません。関数とREPLスニペットは許可されていません。

  • 各プログラムの出力は、stdoutまたは使用している言語で受け入れられている代替に行く必要があります。

  • プログラムは入力を要求したり、入力を要求したりしないでください。(入力のプロンプトが言語固有のものである場合は、問題ありません。)

  • プログラムは確定的で、実行時間が有限で、独立している必要があります。たとえば、他のプログラムとは別のフォルダーで実行されるかどうかは問題ではありません。

  • プログラムの出力は、対応する正確な印刷可能なASCII文字である必要があります。オプションで、後続の単一の改行が続きます。

95の(理想的には)すべてのプログラムに関する情報、およびスコアとDNPを必ず含めてください。あなたはリストする必要はありませんすべて「のような単純なパターンに従ったプログラムをprint(chr(80))print(chr(81))print(chr(82))...」しかし、あなたは彼らがすべて確認していることを確認します仕事とあなたのスコアが正しく追加されています。

参考までに、プログラムで出力する必要がある95の印刷可能なASCIIは次のとおりです。

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

私のエンコードで、たとえば0ではなく日の0x30コードの場合、印刷可能なASCIIは通常の95(マイナス0)であると仮定できますか?
漏れの修道女

4
何?印刷可能なASCIIを使用する必要があります。それは単なるルールです。
カルビンの趣味

私のように0x30からの正確な表現を持っていないエンコーディングがあると信じて0
漏れ修道女

@LeakyNun EBCDIC
TuxCrafting

2
@ティム番号。独立規則に従っていません。
カルビンの趣味

回答:


25

Python 2、1075 1065 1043 1040 1039バイト

各プログラムの形式print'\<octal char code>'は次のとおりです:

  • 'print"\47"
  • 0を介して8print~-<N+1>
  • 9print-~8
  • \print'%c'%92
  • iexec'pr\151nt"\151"'
  • nexec'pri\156t"\156"'
  • pexec'\160rint"\160"'
  • rexec'p\162int"\162"'
  • texec'prin\164"\164"'

参照とテストを容易にするために、改行で区切られたプログラムの完全なリストを以下に示します。

print'\40'
print'\41'
print'\42'
print'\43'
print'\44'
print'\45'
print'\46'
print"\47"
print'\50'
print'\51'
print'\52'
print'\53'
print'\54'
print'\55'
print'\56'
print'\57'
print~-1
print~-2
print~-3
print~-4
print~-5
print~-6
print~-7
print~-8
print~-9
print-~8
print'\72'
print'\73'
print'\74'
print'\75'
print'\76'
print'\77'
print'\100'
print'\101'
print'\102'
print'\103'
print'\104'
print'\105'
print'\106'
print'\107'
print'\110'
print'\111'
print'\112'
print'\113'
print'\114'
print'\115'
print'\116'
print'\117'
print'\120'
print'\121'
print'\122'
print'\123'
print'\124'
print'\125'
print'\126'
print'\127'
print'\130'
print'\131'
print'\132'
print'\133'
print'%c'%92
print'\135'
print'\136'
print'\137'
print'\140'
print'\141'
print'\142'
print'\143'
print'\144'
print'\145'
print'\146'
print'\147'
print'\150'
exec'pr\151nt"\151"'
print'\152'
print'\153'
print'\154'
print'\155'
exec'pri\156t"\156"'
print'\157'
exec'\160rint"\160"'
print'\161'
exec'p\162int"\162"'
print'\163'
exec'prin\164"\164"'
print'\165'
print'\166'
print'\167'
print'\170'
print'\171'
print'\172'
print'\173'
print'\174'
print'\175'
print'\176'

テストする:

$ python printables.py | sed ':a;N;$!ba;s/\n//g'
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

@ Sp3000のおかげで-1バイト!


print~-<N+1>は機能しません1。あなたはそれがために働くと0します8
haykam

7
@ピーナッツ のコード<angle brackets>はリテラルコードではありません。代替<N+1>のリテラル値を持ちますN+1。この場合、プログラムはに1なりますprint~-2。プログラムの完全なリストを参照してください。

21

CJam、269バイト

各プログラムは、以下'<char - 1>)を除く形式です。

  • スペース=> S、1バイト
  • '=> 39c、3バイト
  • )=> '*(、3バイト
  • 0=> T、1バイト
  • 1=> X、1バイト
  • 2=> Y、1バイト
  • 3=> Z、1バイト
  • 4- 9=> <num-1>)、2バイト

スコアは: 3 * 82 + 1 + 3 + 3 + 4 * 1 + 6 * 2 = 269


39cのために'?また、1桁の数字がその数字になりうることを忘れています
-Sp3000

1
@ SP3000彼らはそれはあなたが入力して生産しているのchar含まれるであろうことはできませんので、
ブルー

しかし、その後、使用1)のために2そこに1バイト節約するなど
ルイスMendo

申し訳ありません1)が、私がええと
言っていた-Sp3000

また、ありますTXYZ
-Sp3000

12

ASCII DOS用のx86マシンコードの制約、 3104 3101 2913バイト

まあ...それはJavaよりも短いと思う...

32 ほぼすべての文字に対して30バイト。例外については以下を参照してください。

ほとんどの場合、パターンに従うだけです。

  1. xor最後までポインタを取得するためにいくつかを行います。
  2. subのオペコードintがASCIIでないため、最後の2ワードから。
  3. 2を取得しAH、文字をに取得しDLます。xor文字自体はプログラムに表示できず、2は印刷可能なASCII文字ではないため、両方とも編集されます。
  4. でキャラクターを印刷する int 21h
  5. で終了 int 20h

ほとんどの場合、文字が許可されていない場合は、データを少し調整するか、別のレジスタに切り替えることで置き換えることができます。

計算に使用できる唯一のレジスタを突然減算したりプッシュしたりポップしたりできないことに突然気付くと、少し面白くなります...

char  code
      hX'X5B&P[hT!^)7CC)7VX5t#PZ!C!B
!     hX'X5B&P[hS ^)7CC)7VX5r"PZ B A
"     hX'X5B&P[hS!^)7CC)7VX5q#PZ C B
#     hX'X5B&P[hS ^)7CC)7VX5p"PZ B A
$     hX'X5B&P[hS ^)7CC)7VX5w"PZ B A
%     hX'X5B&P[hS ^)7CC)7VX5v"PZ B A
&     hX#X5B"P[hS ^)7CC)7VX5u"PZ B A
'     hX#X5B"P[hS ^)7CC)7VX5t"PZ B A
(     hX'X5B&P[hS ^)7CC)7VX5{"PZ B A
)     hi'X5B&P[h!!X%BBHP^$!P_17C!?C17C!?hiBX5@@PZ2@2A
*     hX'X5B&P[hS ^)7CC)7VX5y"PZ B A
+     hX'X5B&P[hS ^)7CC)7VX5x"PZ B A
,     hX'X5B&P[hT ^)7CC)7VX5x"PZ!B!A
-     hX'X5B&P[hS ^)7CC)7VX5~"PZ B A
.     hX'X5B&P[hS ^)7CC)7VX5}"PZ B A
/     hX'X5B&P[hS ^)7CC)7VX5|"PZ B A
0     hX'X5B&P[hS ^)7CC)7VX5c"PZ B A
1     hX'X5B&P[hS ^)7CC)7VX5b"PZ B A
2     hX'X5B&P[hS ^)7CC)7VX5a"PZ B A
3     hX'X5B&P[hS ^)7CC)7VX5`"PZ B A
4     hX'X5B&P[hS ^)7CC)7VX5g"PZ B A
5     h;'X%[AP[h=S^)7CC)7VX%7"PZ _ ^
6     hX'X5B&P[hS ^)7CC)7VX5e"PZ B A
7     hX'X5B&P[hS _)?CC)?WX5d"PZ B A
8     hX'X5B&P[hS ^)7CC)7VX5k"PZ B A
9     hX'X5B&P[hS ^)7CC)7VX5j"PZ B A
:     hX'X5B&P[hS ^)7CC)7VX5i"PZ B A
;     hX'X5B&P[hS ^)7CC)7VX5h"PZ B A
<     hX'X5B&P[hS ^)7CC)7VX5o"PZ B A
=     hX'X5B&P[hS ^)7CC)7VX5n"PZ B A
>     hX'X5B&P[hS ^)7CC)7VX5m"PZ B A
?     hX'X5B&P[hS ^)7CC)7VX5l"PZ B A

@     hX'X5B&P[h` ^)7CC)7VX5 "PZ-B-A
A     hX'X5B&P[h`!^)7CC)7VX5!#PZ-C-B
B     h['X5A&P[h`"^)7CC)7VX5" PZ-D-C
C     hX'X5B&P_h` ^)5GG)5VX5#"PZ-B-A
D     hX'X5B&P[h` ^)7CC)7VX5$"PZ-B-A
E     hX'X5B&P[h` ^)7CC)7VX5%"PZ-B-A
F     hX'X5B&P[h` ^)7CC)7VX5&"PZ-B-A
G     hX'X5B&P[h` ^)7CC)7VX5'"PZ-B-A
H     hX'X5B&P[h` ^)7CC)7VX5("PZ-B-A
I     hX'X5B&P[h` ^)7CC)7VX5)"PZ-B-A
J     hX'X5B&P[h` ^)7CC)7VX5*"PZ-B-A
K     hX'X5B&P[h` ^)7CC)7VX5+"PZ-B-A
L     hX'X5B&P[h` ^)7CC)7VX5,"PZ-B-A
M     hX'X5B&P[h` ^)7CC)7VX5-"PZ-B-A
N     hX'X5B&P[h` ^)7CC)7VX5."PZ-B-A
O     hX'X5B&P[h` ^)7CC)7VX5/"PZ-B-A
P     hj'X5B&`[[[[[[[[h` ^)7CC)7VX50"`ZZZZZZZZ-B-A
Q     hX'X5B&P[h` ^)7CC)7VX51"PZ-B-A
R     hX'X5B&P[h` ^)7CC)7VX52"PZ-B-A
S     hX'X5B&P[h` ^)7CC)7VX53"PZ-B-A
T     hX'X5B&P[h` ^)7CC)7VX54"PZ-B-A
U     hX'X5B&P[h` ^)7CC)7VX55"PZ-B-A
V     hX'X5B&P[h` _)?CC)?WX56"PZ B A
W     hX'X5B&P[h` ^)7CC)7VX57"PZ-B-A
X     _TYhe'WWWQWWWa5B&P[hSS^)7CC)7CC5_C5 @PZ u t
Y     hX'X5B&P[h` ^)7CC)7VX59"PZ-B-A
Z     _WTYhzBX5 @Phe'WPWQWWWa5B&P[hSS^)7CC)7X u t
[     hX'X5B&P_h` ^)5GG)5VX5;"PZ-B-A
\     hX'X5B&P[h` ^)7CC)7VX5<"PZ-B-A
]     hX'X5B&P[h` ^)7CC)7VX5="PZ-B-A
^     hX'X5B&P[h` _)?CC)?WX5>"PZ-B-A
_     hX'X5B&P[h` ^)7CC)7VX5?"PZ-B-A

`     hX'X5B&P[hS ^)7CC)7VX53"PZ B A
a     hX'X5B&P[hS ^)7CC)7VX52"PZ B A
b     hX'X5B&P[hS ^)7CC)7VX51"PZ B A
c     hX'X5B&P[hS ^)7CC)7VX50"PZ B A
d     hX'X5B&P[hS ^)7CC)7VX57"PZ B A
e     hX'X5B&P[hS ^)7CC)7VX56"PZ B A
f     hX'X5B&P[hS ^)7CC)7VX55"PZ B A
g     hX'X5B&P[hS ^)7CC)7VX54"PZ B A
h     _WWX5b'5B&P[WX5S P^)7CC)7VX5;"PZ B A
i     hX'X5B&P[hS ^)7CC)7VX5:"PZ B A
j     hX'X5B&P[hS ^)7CC)7VX59"PZ B A
k     hX'X5B&P[hS ^)7CC)7VX58"PZ B A
l     hX'X5B&P[hS ^)7CC)7VX5?"PZ B A
m     hX'X5B&P[hS ^)7CC)7VX5>"PZ B A
n     hX'X5B&P[hS ^)7CC)7VX5="PZ B A
o     hX'X5B&P[hS ^)7CC)7VX5<"PZ B A
p     hX'X5B&P[hS ^)7CC)7VX5#"PZ B A
q     hX'X5B&P[hS ^)7CC)7VX5""PZ B A
r     hX'X5B&P[hS ^)7CC)7VX5!"PZ B A
s     hX'X5B&P[hS ^)7CC)7VX5 "PZ B A
t     hX'X5B&P[hS ^)7CC)7VX5'"PZ B A
u     hX'X5B&P[hS ^)7CC)7VX5&"PZ B A
v     hX'X5B&P[hS ^)7CC)7VX5%"PZ B A
w     hX'X5B&P[hS ^)7CC)7VX5$"PZ B A
x     hX'X5B&P[hS ^)7CC)7VX5+"PZ B A
y     hX'X5B&P[hS ^)7CC)7VX5*"PZ B A
z     hX'X5B&P[hS ^)7CC)7VX5)"PZ B A
{     hX'X5B&P[hS ^)7CC)7VX5("PZ B A
|     hX'X5B&P[hS ^)7CC)7VX5/"PZ B A
}     hX'X5B&P[hS ^)7CC)7VX5."PZ B A
~     hX'X5B&P[hS ^)7CC)7VX5-"PZ B A

11

Brainfuck、 1770 1710 1703 1686バイト

Dennisが保存した60バイト
Sp3000が保存した17バイト

DNP:46(.

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

43、45、60、62、91、93を除くすべては、Esolangs.orgから恥知らずに盗まれています


3
@βετѧΛєҫαγおそらくほとんどがコピーされたためです。
カルビンの趣味

8
@HelkaHombaつまり、BF定数は基本的に私が知っているものから最短です。既に確立された定数で自分でやろうとするのは無意味です。
非常識な

3
--[>-<---]>[<->--]<[->-<]>.出力用に動作します+
デニス

3
@Dennisちょっとバッシング:-----[[----<]>>-]<.
Sp3000

2
また+[+[+>]<<++++]>.
Sp3000

9

MATL、305、302、300の 297バイト

すべてのプログラムは次のようになります。

33c
34c
35c
....

を除いて

  • 桁。0-9のプログラムは次のとおりです。

    O
    l
    H
    I
    K
    4Q
    5Q
    6Q
    7Q
    8Q
    
  • 「c」。このプログラムは

    'C'k
    
  • スペース。これは

    0c
    

    今日から、MATLは文字0をスペースとして扱うことを学びました。ありがとう@LuisMendo!

matl.tioを使用して、それらのいずれかを検証できます。

参考までに、それらすべてを以下に示します。

0c
33c
34c
35c
36c
37c
38c
39c
40c
41c
42c
43c
44c
45c
46c
47c
O
l
H
I
K
4Q
5Q
6Q
7Q
8Q
58c
59c
60c
61c
62c
63c
64c
65c
66c
67c
68c
69c
70c
71c
72c
73c
74c
75c
76c
77c
78c
79c
80c
81c
82c
83c
84c
85c
86c
87c
88c
89c
90c
91c
92c
93c
94c
95c
96c
97c
98c
'C'k
100c
101c
102c
103c
104c
105c
106c
107c
108c
109c
110c
111c
112c
113c
114c
115c
116c
117c
118c
119c
120c
121c
122c
123c
124c
125c
126c

@LuisMendo私はまだ297をカウントしています
DJMcMayhem

@LuisMendo私も297を数えます。
リーキー修道女

申し訳ありませんが、私の間違い
ルイスメンドー

9

Java 8、6798 6582 6577バイト

はぁ

これは基本的にはPython 2の回答の移植ですが、Javaで完全なプログラムを作成する際に必要なすべての定型文が含まれています。

これで、DNPがまったくなくなりました!ありがとう、ケビン・クルーッセン!

次の場合をinterface A{static void main(String[]a){System.out.print("\<octal char code>");}}除き、ほとんどのプログラムにはの形式があります。

  • スペース→ interface\tA{static\tvoid\tmain(String[]a){System.out.print("\40");}}(ただし、\tsは生のタブに置き換えられます)
  • "interface A{static void main(String[]a){System.out.print('\42');}}
  • (interface A{static void main\u0028String[]a){System.out.print\u0028"\50");}}
  • )interface A{static void main(String[]a\u0029{System.out.print("\51"\u0029;}}
  • .interface A{static void main(String[]a){System\u002Eout\u002Eprint("\56");}}
  • 0interface A{static void main(String[]a){System.out.print(1-1);}}
  • 1interface A{static void main(String[]a){System.out.print(3-2);}}
  • 2interface A{static void main(String[]a){System.out.print(3-1);}}
  • 3interface A{static void main(String[]a){System.out.print(4-1);}}
  • 4interface A{static void main(String[]a){System.out.print(5-1);}}
  • 5interface A{static void main(String[]a){System.out.print(6-1);}}
  • 6interface A{static void main(String[]a){System.out.print(7-1);}}
  • 7interface A{static void main(String[]a){System.out.print(8-1);}}
  • 8interface A{static void main(String[]a){System.out.print(9-1);}}
  • 9interface A{static void main(String[]a){System.out.print(8+1);}}
  • ;interface A{static void main(String[]a){System.out.print("\73")\u003B}}
  • Ainterface B{static void main(String[]a){System.out.print("\101");}}
  • Sinterface A{static void main(\u0053tring[]a){\u0053ystem.out.print("\123");}}
  • [interface A{static void main(String...a){System.out.print("\133");}}
  • \interface A{static void main(String[]a){System.out.print((char)92);}}
  • ]interface A{static void main(String...a){System.out.print("\135");}}
  • ainterf\u0061ce A{st\u0061tic void m\u0061in(String[]b){System.out.print("\141");}}
  • cinterfa\u0063e A{stati\u0063 void main(String[]a){System.out.print("\143");}}
  • dinterface A{static voi\u0064 main(String[]a){System.out.print("\144");}}
  • eclass A{public static void main(String[]a){Syst\u0065m.out.print("\145");}}
  • fclass A{public static void main(String[]a){System.out.print("\146");}}
  • ginterface A{static void main(Strin\u0067[]a){System.out.print("\147");}}// \u0067
  • i\u0069nterface A{stat\u0069c vo\u0069d ma\u0069n(Str\u0069ng[]a){System.out.pr\u0069nt("\151");}}
  • minterface A{static void \u006Dain(String[]a){Syste\u006D.out.print("\155");}}
  • nclass A{public static void mai\u006E(Stri\u006Eg[]a){System.out.pri\u006Et("\156");}}
  • ointerface A{static v\u006Fid main(String[]a){System.\u006Fut.print("\157");}}
  • pinterface A{static void main(String[]a){System.out.\u0070rint("\160");}}
  • rclass A{public static void main(St\u0072ing[]a){System.out.p\u0072int("\162");}}
  • sinterface A{\u0073tatic void main(String[]a){Sy\u0073tem.out.print("\163");}}
  • tclass A{public s\u0074a\u0074ic void main(S\u0074ring[]a){Sys\u0074em.ou\u0074.prin\u0074("\164");}}
  • uinterface A{static void main(String[]a){System.console().printf("%c",117);}}
  • vinterface A{static \u0076oid main(String[]a){System.out.print("\166");}}
  • yinterface A{static void main(String[]a){S\u0079stem.out.print("\171");}}
  • {interface A\u007Bstatic void main(String[]a)\u007BSystem.out.print("\173");}}
  • }interface A{static void main(String[]a){System.out.print("\175");\u007D\u007D

ふう

Javaコンパイラは\u007B、他の処理を行う前と同じようにUnicodeエスケープを処理します。これにより、識別子やキーワードにユニコードエスケープを使用するコードを記述できます。したがって、ボイラープレートに存在する文字を使用しないプログラムを作成するには、単純にそれをUnicodeエスケープに置き換えます。

参照およびテストを容易にするために、改行で区切られ、生のタブが4つのスペースに置き換えられたプログラムの完全なリストを以下に示します。

interface    A{static    void    main(String[]a){System.out.print("\40");}}
interface A{static void main(String[]a){System.out.print("\41");}}
interface A{static void main(String[]a){System.out.print('\42');}}
interface A{static void main(String[]a){System.out.print("\43");}}
interface A{static void main(String[]a){System.out.print("\44");}}
interface A{static void main(String[]a){System.out.print("\45");}}
interface A{static void main(String[]a){System.out.print("\46");}}
interface A{static void main(String[]a){System.out.print("\47");}}
interface A{static void main\u0028String[]a){System.out.print\u0028"\50");}}
interface A{static void main(String[]a\u0029{System.out.print("\51"\u0029;}}
interface A{static void main(String[]a){System.out.print("\52");}}
interface A{static void main(String[]a){System.out.print("\53");}}
interface A{static void main(String[]a){System.out.print("\54");}}
interface A{static void main(String[]a){System.out.print("\55");}}
interface A{static void main(String[]a){System\u002Eout\u002Eprint("\56");}}
interface A{static void main(String[]a){System.out.print("\57");}}
interface A{static void main(String[]a){System.out.print(1-1);}}
interface A{static void main(String[]a){System.out.print(3-2);}}
interface A{static void main(String[]a){System.out.print(3-1);}}
interface A{static void main(String[]a){System.out.print(4-1);}}
interface A{static void main(String[]a){System.out.print(5-1);}}
interface A{static void main(String[]a){System.out.print(6-1);}}
interface A{static void main(String[]a){System.out.print(7-1);}}
interface A{static void main(String[]a){System.out.print(8-1);}}
interface A{static void main(String[]a){System.out.print(9-1);}}
interface A{static void main(String[]a){System.out.print(8+1);}}
interface A{static void main(String[]a){System.out.print("\72");}}
interface A{static void main(String[]a){System.out.print("\73")\u003B}}
interface A{static void main(String[]a){System.out.print("\74");}}
interface A{static void main(String[]a){System.out.print("\75");}}
interface A{static void main(String[]a){System.out.print("\76");}}
interface A{static void main(String[]a){System.out.print("\77");}}
interface A{static void main(String[]a){System.out.print("\100");}}
interface B{static void main(String[]a){System.out.print("\101");}}
interface A{static void main(String[]a){System.out.print("\102");}}
interface A{static void main(String[]a){System.out.print("\103");}}
interface A{static void main(String[]a){System.out.print("\104");}}
interface A{static void main(String[]a){System.out.print("\105");}}
interface A{static void main(String[]a){System.out.print("\106");}}
interface A{static void main(String[]a){System.out.print("\107");}}
interface A{static void main(String[]a){System.out.print("\110");}}
interface A{static void main(String[]a){System.out.print("\111");}}
interface A{static void main(String[]a){System.out.print("\112");}}
interface A{static void main(String[]a){System.out.print("\113");}}
interface A{static void main(String[]a){System.out.print("\114");}}
interface A{static void main(String[]a){System.out.print("\115");}}
interface A{static void main(String[]a){System.out.print("\116");}}
interface A{static void main(String[]a){System.out.print("\117");}}
interface A{static void main(String[]a){System.out.print("\120");}}
interface A{static void main(String[]a){System.out.print("\121");}}
interface A{static void main(String[]a){System.out.print("\122");}}
interface A{static void main(\u0053tring[]a){\u0053ystem.out.print("\123");}}
interface A{static void main(String[]a){System.out.print("\124");}}
interface A{static void main(String[]a){System.out.print("\125");}}
interface A{static void main(String[]a){System.out.print("\126");}}
interface A{static void main(String[]a){System.out.print("\127");}}
interface A{static void main(String[]a){System.out.print("\130");}}
interface A{static void main(String[]a){System.out.print("\131");}}
interface A{static void main(String[]a){System.out.print("\132");}}
interface A{static void main(String...a){System.out.print("\133");}}
interface A{static void main(String[]a){System.out.print((char)92);}}
interface A{static void main(String...a){System.out.print("\135");}}
interface A{static void main(String[]a){System.out.print("\136");}}
interface A{static void main(String[]a){System.out.print("\137");}}
interface A{static void main(String[]a){System.out.print("\140");}}
interf\u0061ce A{st\u0061tic void m\u0061in(String[]b){System.out.print("\141");}}
interface A{static void main(String[]a){System.out.print("\142");}}
interfa\u0063e A{stati\u0063 void main(String[]a){System.out.print("\143");}}
interface A{static voi\u0064 main(String[]a){System.out.print("\144");}}
class A{public static void main(String[]a){Syst\u0065m.out.print("\145");}}
class A{public static void main(String[]a){System.out.print("\146");}}
interface A{static void main(Strin\u0067[]a){System.out.print("\147");}}
interface A{static void main(String[]a){System.out.print("\150");}}
\u0069nterface A{stat\u0069c vo\u0069d ma\u0069n(Str\u0069ng[]a){System.out.pr\u0069nt("\151");}}
interface A{static void main(String[]a){System.out.print("\152");}}
interface A{static void main(String[]a){System.out.print("\153");}}
interface A{static void main(String[]a){System.out.print("\154");}}
interface A{static void \u006Dain(String[]a){Syste\u006D.out.print("\155");}}
class A{public static void mai\u006E(Stri\u006Eg[]a){System.out.print("\156");}}
interface A{static v\u006Fid main(String[]a){System.\u006Fut.print("\157");}}
interface A{static void main(String[]a){System.out.\u0070rint("\160");}}
interface A{static void main(String[]a){System.out.print("\161");}}
class A{public static void main(St\u0072ing[]a){System.out.p\u0072int("\162");}}
interface A{\u0073tatic void main(String[]a){Sy\u0073tem.out.print("\163");}}
class A{public s\u0074a\u0074ic void main(S\u0074ring[]a){Sys\u0074em.ou\u0074.prin\u0074("\164");}}
interface A{static void main(String[]a){System.console().printf("%c",117);}}
interface A{static \u0076oid main(String[]a){System.out.print("\166");}}
interface A{static void main(String[]a){System.out.print("\167");}}
interface A{static void main(String[]a){System.out.print("\170");}}
interface A{static void main(String[]a){S\u0079stem.out.print("\171");}}
interface A{static void main(String[]a){System.out.print("\172");}}
interface A\u007Bstatic void main(String[]a)\u007BSystem.out.print("\173");}}
interface A{static void main(String[]a){System.out.print("\174");}}
interface A{static void main(String[]a){System.out.print("\175");\u007D\u007D
interface A{static void main(String[]a){System.out.print("\176");}}

OSのネイティブ端末(Windows、およびLinux / OSXの場合)以外から呼び出した場合、プログラムはnullを返す(したがって、コードをスローする)uを使用することに注意してください。。System.console()NullPointerExceptioncmdbash

テストするには、新しいディレクトリを作成し、printablesそのディレクトリで指定されたファイルに上記のコードを配置します。次に、次のBashスクリプトを実行します。

#!/bin/bash
split -l 1 printables
for i in x*; do
  mkdir z$i
  mv $i z$i/A.java
done
mv zxbh/A.java zxbh/B.java
for i in zx*; do
  javac $i/[AB].java
  if ! java -cp $i A 2> /dev/null; then
    java -cp $i B
  fi
done
rm -r zx*

上記のスクリプトは、各行をprintables独自のディレクトリに配置し、すべての名前を付けますA.java(名前がprint Aに変更されるファイルを除くB.java)。各ファイルをコンパイルして実行し、証拠を削除します。印刷可能なASCII文字がシェルに表示されるまでに約10秒かかります。

Windowsを使用している場合は、代わりに次のバッチファイルを実行します。

@echo off
setlocal enabledelayedexpansion
set i=0
for /F "tokens=*" %%L in (printables) do (
  set file=A.java
  if "%i%" == "33" (set file=B.java)
  echo %%L>"%file%"
  javac "%file%"
  java -cp . A
  if not errorlevel 0 (java -cp . B)
  set /A i=%i% + 1
)
del *.java
del *.class

このバッチファイルのアプローチは少し異なります。行を事前に分割する代わりに、ファイルを1行ずつ処理し、各プログラムを順番にコンパイルして実行します。繰り返しますが、終了後に証拠を削除します。

数え切れないほどのバイト数を節約+ Kevin Cruijssenのおかげで1 DNP!


2
私はランダムを愛しclass B印刷用A
タス

あなたは私を打ち負かした。昨日の終わりには、ユニコードエスケープを使用してJavaの回答も書いていました。ああ、+ 1、よく書かれた回答、たった1 DNPは、Javaについて前に思ったほど悪くはありません。;)
ケビンクルーイッセン

2
ところで、あなたは、Javaを使用する場合(8+ uのためにDNPを削除する可能性がありinterfaceますが、削除することができますので、クラスの代わりにpublic)とあなたのOSはコンソールが内蔵され、もしそうなら、あなたが使用する必要はありませんSystem.out.printinterface A{static void main(String[]a){System.console().printf("%1",(char)117);}}Eclipseの、IntelliJのは、ただし、オンラインコンパイラにはこのコンソールがなく、結果としてNullPointerException
ケビンCruijssen

@KevinCruijssenありがとう!私は今それを作り直すことに取り組んでいます。

n:脱出を忘れたprint
-WeaponsGrade

7

> <>443 437バイト

TIOインタープリターリンク。ここには多くのパターンがあります:

  • [num][num]*o; 2つの数値の乗算、結果をcharで出力しo、で停止し;ます。> <>桁は15まで、つまり0123456789abcdef
    • 同様に[num][num]-n;、2つの数値の差を取り、n代わりに数値として出力します。
  • '-o[invalid char] > <>はトロイダルであるため、命令ポインターが行の終わりに達すると、最初に戻ります。この場合、これによりコードが2回実行され'-o[char]'-o[char]ます。最初の'-o[char]'部分は、スタックに3つの文字を押す-算出'o' - [char]次いでo文字として出力します。> <>は[char]、コマンドが認識されないか、空のスタックをポップするため、に達するとエラーになります。

    • 同様に'-n[invalid char]、数値として出力します。
    • 同様に'[num][op]o[invalid char]、適用される[op][num]上の[char]文字の上に出てerroring、。たとえば、'2+oJoutputsはL、の2倍ですJ
    • 'のコードは"-oH"代わりに使用しています。
    • -のコードは'%oB%代わりに使用しています。
  • ln;:スタックの長さをプッシュし、numとして出力してから停止し、を与え0ます。同様にlln;for 1'ln;for 3

  • 4|n+ 4 |を押してバウンスし、さらに4を押して追加し、8numとして出力します。|再び跳ね返りn、空のスタックで再度実行しようとしてエラーが発生します。
    • 同様3|n*9
    • 同様[num]|o*@Qdy
  • '1-:00pこのoケースで最も興味深いものです。使用しないようにするにはo我々のコードでは、私たちが使用する必要がありますp配置するためにo、それを実行し、codeboxに。イニシャル'1-:00p'は、スタックpを最上部に持つように設定し、1-それをに減らしますo:これを複製しo00p1 oを(0、0)に置き、コードボックスをに変えo1-:00pます。命令ポインタは再びラップし、もう一方を出力しoます。(0、0)文字は、プログラムが最終的にエラーになる前に、さらに数回置き換えられます。

      '-oO
!     '-oN
"     '-oM
#     '-oL
$     '-oK
%     '-oJ
&     '-oI
'     "-oH
(     '-oG
)     '-oF
*     '-oE
+     '-oD
,     '-oC
-     '%oB
.     '-oA
/     '-o@
0     ln;
1     lln;
2     '-o=
3     'ln;
4     '-o;
5     61-n;
6     '-nh
7     '-ng
8     4|n+
9     3|n*
:     '1-o;
;     '6-oA
<     6a*o;
=     '2+o;
>     '3+o;
?     79*o;
@     8|o*
A     '-o.
B     '-o-
C     '-o,
D     '-o+
E     '-o*
F     '-o)
G     '-o(
H     89*o;
I     '1-oJ
J     '-o%
K     '-o$
L     '2+oJ
M     7b*o;
N     '-o!
O     '5+oJ
P     8a*o;
Q     9|o*
R     '8+oJ
S     '9+oJ
T     7c*o;
U     'b+oJ
V     'c+oJ
W     'd+oJ
X     8b*o;
Y     'f+oJ
Z     9a*o;
[     7d*o;
\     'c-oh
]     'b-oh
^     'a-oh
_     '9-oh
`     8c*o;
a     '7-oh
b     7e*o;
c     9b*o;
d     a|o*
e     '3-oh
f     '2-oh
g     '1-oh
h     '2-oj
i     8d*o;
j     '2+oh
k     '3+oh
l     9c*o;
m     '5+oh
n     ab*o;
o     '1-:00p
p     8e*o;
q     '3-ot
r     '2-ot
s     '1-ot
t     '1+os
u     9d*o;
v     '2+ot
w     '3+ot
x     ac*o;
y     b|o*
z     '6+ot
{     '7+ot
|     '8+ot
}     '9+ot
~     9e*o;

7

Dyalog APL527 522 バイト

(APLはASCIIのみを使用して実際に記述できないため、競合しません)

ほとんどは形式であるnn⊃⎕AVnnn⊃⎕AV、例外があること:

''      space: extract one char from an empty string
THIS    hash: this namespace
1↓⍕÷2   period: the first char after stripping one char from 1÷2, i.e. 0.5
⊃⍬       zero: extract one number from an empty numeric list
≢#       one: tally the root namespace
⍴⍬⍬      two: count two empty lists
WX      three: default "Window Expose" setting
×⍨2      four: 2×2
6-1      five: 6-1
!3       six: 3!
6+1      seven: 6+1
2*3      eight: 2³
3*2      nine: 3²
⊃⎕a      A: first character (Dyalog system names are case insensitive)
2⊃⎕A    
          B-Y: n'th character
25⊃⎕A   ⍝
⊃⌽⎕A    ⍝ Z: last character

リスト全体を次に示します。

''
205⊃⎕AV
216⊃⎕AV
THIS
62⊃⎕AV
13⊃⎕AV
219⊃⎕AV
14⊃⎕AV
186⊃⎕AV
249⊃⎕AV
181⊃⎕AV
170⊃⎕AV
195⊃⎕AV
169⊃⎕AV
1↓⍕÷2
157⊃⎕AV
⊃⍬
≢#
⍴⍬ 
WX
×⍨2
6-1
!3
6+1
2*3
3*2
241⊃⎕AV
194⊃⎕AV
161⊃⎕AV
163⊃⎕AV
165⊃⎕AV
173⊃⎕AV
232⊃⎕AV
⊃⎕a
2⊃⎕A
3⊃⎕A
4⊃⎕A
5⊃⎕A
6⊃⎕A
7⊃⎕A
8⊃⎕A
9⊃⎕A
10⊃⎕A
11⊃⎕A
12⊃⎕A
13⊃⎕A
14⊃⎕A
15⊃⎕A
16⊃⎕A
17⊃⎕A
18⊃⎕A
19⊃⎕A
20⊃⎕A
21⊃⎕A
22⊃⎕A
23⊃⎕A
24⊃⎕A
25⊃⎕A
26⊃⎕A
156⊃⎕AV
159⊃⎕AV
250⊃⎕AV
236⊃⎕AV
17⊃⎕AV
238⊃⎕AV
18⊃⎕AV
19⊃⎕AV
20⊃⎕AV
21⊃⎕AV
22⊃⎕AV
23⊃⎕AV
24⊃⎕AV
25⊃⎕AV
26⊃⎕AV
27⊃⎕AV
28⊃⎕AV
29⊃⎕AV
30⊃⎕AV
31⊃⎕AV
32⊃⎕AV
33⊃⎕AV
34⊃⎕AV
35⊃⎕AV
36⊃⎕AV
37⊃⎕AV
38⊃⎕AV
39⊃⎕AV
40⊃⎕AV
41⊃⎕AV
42⊃⎕AV
43⊃⎕AV
124⊃⎕AV
193⊃⎕AV
126⊃⎕AV
176⊃⎕AV

1
この形式は、私の意見では、他の回答形式未満便利です
漏れ尼僧

@LeakyNunメソッドごとにグループ化するつもりですか?かなりの数の例外があります。
アダム

2
これらはすべて印刷可能なASCIIではないため、技術的には無効です。しかし、非競争的な投稿には印刷不可能なASCIIが許可されているというメモを追加します。
カルビンの趣味

@HelkaHombaおっと、その要件に気付かなかった。
アダム

私の新しいお気に入りのスマイリーです
ルーカスTrzesniewski

6

ルビー、869バイト

63文字の場合@を通じて~、我々は、10バイトのソリューションを持っています:

$><<"\xxx"     (3 digit octal code)
$><<92.chr     (special case for \)

最も(21)文字についてspaceを通して?、私たちは9バイトのソリューションを持っています:

puts"\xx"     (2 digit octal code)

残りの11の特別なケースがあります。

$><<34.chr    (10 bytes for ")
p$.           (3 bytes for 0)
p~-2          \
p~-3           \ (4 bytes for 1-8)
...            /
p~-9          /
p 1+8         (5 bytes for 9)

合計で、スコアは10×63 + 9×21 + 10 + 3 + 8×4 + 5 = 869です。


8進エスケープの場合、それぞれ1バイトの?\xxx代わりに使用できます"\xxx"
ヨルダン

なぜp 1+8ありませんかp-~8
チョイス

@Cyoce Rubyはそれをbinary -または何かとして解釈します。:(
リン

編集/再集計のN_Nを作ること自由に感じ... @Jordanは指摘したが、私は怠け者
リン・

2
これらのほとんどはputc 65=>A
histocrat

5

WolframAlpha、368バイト

一般的な形式:

u+<character code in hexadecimal>

例外:

Character   Code
+           plus
0           1-1
1           0!
2           1+1
3           1+2
4           2+2
5           2+3
6           3!
7           3+4
8           4+4
9           4+5
u           U+75

完全なリストは次のとおりです。

u+20
u+21
u+22
u+23
u+24
u+25
u+26
u+27
u+28
u+29
u+2A
plus
u+2C
u+2D
u+2E
u+2F
1-1
0!
1+1
1+2
2+2
2+3
3!
3+4
4+4
4+5
u+3A
u+3B
u+3C
u+3D
u+3E
u+3F
u+40
u+41
u+42
u+43
u+44
u+45
u+46
u+47
u+48
u+49
u+4A
u+4B
u+4C
u+4D
u+4E
u+4F
u+50
u+51
u+52
u+53
u+54
u+55
u+56
u+57
u+58
u+59
u+5A
u+5B
u+5C
u+5D
u+5E
u+5F
u+60
u+61
u+62
u+63
u+64
u+65
u+66
u+67
u+68
u+69
u+6A
u+6B
u+6C
u+6D
u+6E
u+6F
u+70
u+71
u+72
u+73
u+74
U+75
u+76
u+77
u+78
u+79
u+7A
u+7B
u+7C
u+7D
u+7E

5

PHP(891 680 674バイト、2 0 DNP)

編集: jimmy23013のおかげで203バイトを節約し、Megoのおかげで2 DNPを実装しました


この回答は、PHPの寛大な性質を酷使しています。ほとんどの場合、次のいずれかの形式を取ります(各7バイト):

<?=Y^x;
<?=Z&e;
<?=V|Z;

PHPは、文字列への操作者のいずれかの側に文字を変換し、そのASCII文字値に各文字列を変換することにより、適切なビット単位の演算を行い、最終的に結果を変換するバック文字に。

上記の最初の例では、にY^xなり89^78ます。この結果は33、文字としてSTDOUTに送信されます!

考えられるすべての組み合わせをブルートフォースするスクリプトが作成されまし。結果はこちらにあります


例外:

;is <?=Z^a?>(8バイト)
|is <?='9'^E;(9バイト)

<そして?、通常は必須開始タグにDNPをあろうが、使用して-rフラグを、コードはそれらなしで実行することができます。

<is echo Z^f;(9バイト)
?is echo Z^e;(9バイト)
=is echo Z^g;(9バイト)


スコア:

(7 * 90)+ 8 + 9 + 9 + 9 + 9 = 674バイト


@ jimmy23013おっと、ドキュメントを読み間違えました。
メゴ

& | ^2文字の間で、を除くすべての印刷可能なASCII文字を生成できます<?=|;
jimmy23013

@ jimmy23013それはおかしなことです。PHPのすべての癖を学んだと思ったとき!
クラムバーガー

1
多くの標準フォームソリューションは~、XOR、AND、ORの代わりにバイナリNOTでバイトを保存するように最適化できます。PHPは、単なる文字よりも多くの印刷可能な文字を定数として使用できます。
ファビアンシュメングラー

1
@fschmengler残念ながら、私が見る限り、このチャレンジには有効ではないと思われる拡張ASCII(またはますますエキゾチックなユニコード文字)を使用する必要があります。
クラムバーガー

4

Brachylog546 477バイト

のコードに対するFatalizeへのクレジット@

以下のリストでは、最初の文字が印刷される文字です(簡単に参照できるように)。

  @S
!@Ht
"@P:2m
#@P:3m
$ @P:4m
%@P:5m
&@P:6m
'@P:7m
(@P:8m
)@P:9m
* @P:10m
+ @P:11m
、@ H:5m
-@P:13分
。@P:14m
/ @P:15m
0 1-
1 0+
2 1+
3 2+
4 3+
5 4+
6 5+
7 6+
8 7+
9 8+
:@ P @ 4bhbbbh
; @P:27分
<@P:28m
= @P:29m
> @P:30m
?@P:31m
@ "?": "A" ybh
@ Zt @ u
B @ Ch @ u
C @P:35m
D @P:36メートル
E @P:37分
F @P:38m
G @P:39m
H @P:40m
私@P:41m
J @P:42m
K @P:43m
L @P:44m
M @P:45m
N @P:46メートル
O @P:47m
P @A:15m @ u
Q @P:49m
R @P:50m
S @P:51m
T @P:52m
U @ Vt @ u
V @P:54m
W @ Qt @ u
X @P:56メートル
Y @ Wt @ u
Z @ At @ u
[@P:59m
\ @P:60m
] @P:61m
^ @P:62m
_ @P:63m
`@P:64m
@Vh
b @Ch
c @Dbh
d @A:3m
e @Vbh
f @A:5m
g @A:6m
h @A:7m
私@A:8m
j @A:9m
k @C:7m
l @C:8m
m @ D @ 2ht
n @A:13m
o @H:4m
p @A:15m
q @Z:9m
r @Z:8m
s @Z:7m
t @Z:6m
あなた@Vt
v @Z:4m
w @Qt
x @Z:2m
y @Wt
z @At
{@P:91m
| @P:92m
} @Prbh
〜@Pt

それらはすべて述語なのでZ、出力を受け取るための引数である必要があります:オンラインで試してください!


説明

@P この文字列は次のとおりです。

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

すべての印刷可能なASCIIが含まれています。



@Fatalizeありがとう、更新しました。
リーキー修道女

4

> <>、531バイト

プログラムは2つの主な形式を取ります。

##*o;
"chr-1"1+o;

1つ目は、両方が16未満の2つの要因を持つ文字コードを持つ文字用で、もう1つは他の場合用です。私が2番目の形式を使用するほとんどの数値には、同じ長さのソリューションが多数ありますが、読みやすいように選択しました。

例外:

" b3*1+o; Would be "!"1+o; normally
0 11-n; n outputs as a number
1 22/n;
2-9 #1+n;
; ":"1+o* Ends in an error

全リスト:

! b3*o;
" b3*1+o;
# 57*o;
$ 66*o;
% "$"1+o;
& "%"1+o;
' d3*o;
( a4*o;
) "("1+o;
* ")"1+o;
+ ","1-o;
, b4*o;
- 95*o;
. "-"1+o;
/ "."1+o;
0 11-n;
1 22/n;
2 11+n;
3 21+n;
4 31+n;
5 41+n;
6 51+n;
7 61+n;
8 71+n;
9 81+n;
: "9"1+o;
; ":"1+o*
< a6*o;
= "<"1+o;
> "="1+o;
? 97*o;
@ 88*o;
A d5*o;
B b6*o;
C "B"1+o;
D "C"1+o;
E "D"1+o;
F a7*o;
G "F"1+o;
H 98*o;
I "H"1+o;
J "D"1+o;
K e5*o;
L "K"1+o;
M b7*o;
N d6*o;
O "D"1+o;
P a8*o;
Q 99*o;
R "Q"1+o;
S "R"1+o;
T c7*o;
U "T"1+o;
V "U"1+o;
W "V"1+o;
X b8*o;
Y "X"1+o;
Z a9*o;
[ c7*o;
\ "["1+o;
] "\"1+o;
^ "]"1+o;
_ "^"1+o;
` c8*o;
a "`"1+o;
b e7*o;
c b9*o;
d aa*o;
e "d"1+o;
f "e"1+o;
g "g"1+o;
h d8*o;
i e7*o;
j "i"1+o;
k "j"1+o;
l c9*o;
m "l"1+o;
n ba*o;
o DNP
p e8*o;
q "p"1+o;
r "q"1+o;
s "r"1+o;
t "s"1+o;
u c9*o;
v "u"1+o;
w "v"1+o;
x ca*o;
y bb*o;
z "y"1+o;
~ e9*o;

あなたの;用途;。また、これらのほとんどはエラーを出すことでゴルフができ、o間違いなく可能です。
Sp3000

@ Sp3000 oとの両方を受け入れるインタープリターがない限りO、どのようoに可能かわかりません。そして、エラーで終わるのはどのように短くなりますか?
DanTheMan

oを使用して行うことができますp。ただし、おそらく多くの異なるパターンが関係するため、エラーアウトのために個別に投稿することがあります。
Sp3000

@ Sp3000 ;プログラムを修正しました。それを指摘してくれてありがとう!
DanTheMan

4

Hexagony376 373バイト、1 DNP

3バイトを節約してくれたFryAmTheEggmanに感謝します。

ほとんどすべてのプログラムの形式は同じです。

  P0;@
! P1;@
" P2;@
...
| Y2;@
} Y3;@
~ Y4;@

ただし、いくつかの例外があります。

  • ;を使用せずに印刷することは不可能;であるため、1 DNPです。
  • 印刷@する@には、プログラムの終了に使用できません。代わりにS2;:またはを使用しますS3;%。これはゼロ除算エラーで終了しますが、そのエラーはSTDOUTでは表示されません。したがって、これはまだ4バイトです。
  • U必要となる衝突が1つありますU3;@。すなわち、小文字への切り替えを含め、この問題を解決する方法は、いくつかありn9;@、または増減を使用して、すなわちT);@またはV(;@。いずれにせよ、それはまだ4バイトです。
  • メモリー・エッジはに初期化され0、および!整数値を出力しますので、我々は得ることができる01して!@)!@3バイトを保存し、それぞれ。

<letter><digit>;@プログラムの仕組みについては、フォームのプログラムの六角形のレイアウト1234は常に

 1 2
3 4 .
 . .

どのプログラムにも制御フローをリダイレクトするコマンドが含まれていないため、これらは順番に実行される単なる線形プログラムです。

どの場合でも、コードの先頭の文字は、現在のメモリエッジをその文字コードに設定します。たとえば、プログラムP1;@ではP、値を設定します80。次に、数字はこの値に10を掛けてそれ自体を加算します(つまり、数字は現在の値に追加されます)。それは801上記の例で与えられます。最後に、;この値を256を法として取り、バイト値として使用して出力します。この場合801 % 256 = 33、a !が印刷されます。


4

空白、1643バイト、1 DNP

文字[33-63]の場合は17バイト、文字[64-126]の場合は18バイト

ホワイトスペースでは、印刷可能な文字(スペースを除く)には何の意味もないため、これは簡単です。

[SPACE][SPACE][SPACE][TAB][SPACE][SPACE][SPACE][SPACE][TAB][LF]
[TAB][LF]
[SPACE][SPACE][LF]
[LF]
[LF]

上記のプログラムは、「!」(100001b)。[TAB][SPACE][SPACE][SPACE][SPACE][TAB]最初の行を好きな文字に変更します。スペースを使用せずにスペースを印刷することはできません。何でも印刷は常に[TAB][LF][SPACE]


2
スペースは印刷可能なASCII文字です(「印刷可能なASCII」は0x20から0x7Eまでの範囲を指します)。スペースを使用せずに印刷する方法を見つけられない限り、1 DNPとして含める必要があります。それとは別に、プログラムのスコアを含めてください。
マーティンエンダー

4

網膜、712バイト、2 DNP

これはFryAmTheEggmanとの共同作業でした。

ソリューションにはいくつかのクラスがあります。スペースからまでのほとんどの文字に対して^、次の形式のプログラムを使用します。


_
T`w`p

2行目の文字は範囲_0-9A-Za-zを反復し、残りは変更されません。これにより、空の入力がその文字に変換さpれ、対応する位置で印刷可能なASCII文字(で表される)に置き換えられます。これらのプログラムはそれぞれ8バイト長です。

この範囲内で、いくつかの例外があります。最も重要なのは、数字を短くできることです。

  • 0:(空の入力のs xの数をカウントしxます)
  • 1:  (weehoo、空のプログラム。空の入力の空の一致の数をカウントします)
  • 2:空の文字列をカウントする前に、入力を単一の文字に変換します。

    
    1
    
    
  • 3:同じことですが、入力を2文字に変換します。

    
    11
    
    
  • 4:あなたはアイデアを得る...

    
    111
    
    
  • 5-9:ねじれのプロット... 2行目が長くならないように文字の繰り返しを使用します。

    
    4$*
    
    

    ...

    
    8$*
    
    

他の例外はTDNPです。音訳ステージを使用できない場合、ソースコードに表示されない数字以外の文字を生成することは不可能だと考えています。

残りのキャラクターについて。印刷_するには、上記の一般的なソリューションと同様のプログラムを使用します。


0
T`0`w

w始まる事実を利用する_

次に、`2番目のDNPがあります。これは、音訳の段階でも必要です。

次に、ほとんどの小文字が次のようなもので印刷されます(印刷されますa):


_
T`w`l

繰り返しますが、2行目の文字はを通じて増加し_0-9A-Oます。ここでは、lおよびに注意するだけでw、それぞれ次のプログラムで印刷できます。


P
T`p`w

6
T`p`l

最後に、{|}~残りはそれぞれ9バイト必要です。ここでは、音訳ステージを使用して、それらに先行する文字をインクリメントします。たとえば、次のもの~を使用して印刷できます。


}
T`_p`p

Retinaの新しいバージョンでは、$ Lと$ uを使用して、4バイトのすべての文字(Tを含む)を印刷できます。
レオ

@レオいいえ、私はそうは思いません。私は、問題を解決する範囲拡張となる置換構文に別の二項演算子を追加することを意味してきました。しかし、どのように実装したいかを正確に把握する必要があります。別のオプションは、コードポイントで動作する置換構文機能です。
マーティンエンダー

3

パイク、364の 362 355バイト

2*1 + 3*2 + 14*3 + 2*4 + 5 + 73*4

以下を除くすべての形式w<chr(charcode+32)>.C(4バイト)

  • -> d1バイト
  • 0-> Z1バイト
  • 1-> ~W2バイト
  • a-> Gh2バイト
  • z-> Ge2バイト
  • aフォーム内の最初の10文字の小文字のアルファベット(を除く)G<number>@(3バイト)
  • k-> GT@3バイト
  • >-> ~Bh3バイト
  • ]-> ~Be3バイト
  • Z-> ~le3バイト
  • 9-> ~ue3バイト
  • w-> G22@4バイト
  • .-> ~B4@4バイト
  • C-> ~K38@5バイト

オンラインPyke通訳


3

JavaScript(ES6)、1083 1068バイト

一般的な形式:

alert`\xhex`

例外:

0 alert(9-9)
...
8 alert(9-1)
9 alert(8+1)
\ alert(atob`XA`)
` alert('\x60')
a \u0061lert`\x61`
e al\u0065rt`\x65`
l a\u006cert`\x6c`
r ale\u0072t`\x72`
t aler\u0074`\x74`
x alert`\u0078`

編集:@ GOTO0のおかげで15バイト保存されました。


「x」も特別な処理が必要です。また、alert(atob`XA`)「\」に使用して数バイトを節約します。
後藤0

@ GOTO0うーん、忘れたなんて信じられないx
ニール

1
Javascript \uはソースコードのエスケープを許可しますか?クール
チョイス

@Cyoce:識別子では、はい、一般に、いいえ。
ベルギ

@Bergi Unicodeエスケープが最初に処理されるため、必要に応じてユニコードエスケープに関してソース全体を記述できますが、16進エスケープは文字列内でのみ機能します。
ニール

3

05AB1E、417バイト

!   62D>B
"   63D>B
#   64D>B
$   65D>B
%   66D>B
&   67D>B
'   68D>B
(   69D>B
)   70D>B
*   71D>B
+   72D>B
,   73D>B
-   74D>B
.   75D>B
/   76D>B
0   1<
1   X
2   Y
3   Z
4   3>
5   4>
6   5>
7   6>
8   7>
9   8>
:   77D>B
;   78D>B
<   79D>B
=   80D>B
>   81D1+B
?   82D>B
@   83D>B
A   Th
B   T>h
C   T>>h
D   T3+h
E   T4+h
F   T5+h
G   16D>B
H   17D>B
I   18D>B
J   19D>B
K   20D>B
L   21D>B
M   22D>B
N   23D>B
O   24D>B
P   25D>B
Q   26D>B
R   27D>B
S   28D>B
T   29D>B
U   30D>B
V   31D>B
W   33D>B
X   33D>B
Y   A`\u
Z   A`u
[   84D>B
\   85D>B
]   86D>B
^   87D>B
_   88D>B
`   89D>B
a   A`r
b   A`r\
c   38D>B
d   39D>B
e   40D>B
f   41D>B
g   42D>B
h   43D>B
i   44D>B
j   45D>B
k   46D>B
l   47D>B
m   48D>B
n   49D>B
o   50D>B
p   51D>B
q   52D>B
r   53D>B
s   54D>B
t   55D>B
u   56D>B
v   57D>B
w   58D>B
x   A`\\
y   A`\
z   A`
{   90D>B
|   91D>B
}   92D>B
~   93D>B

説明

ほとんどの形式は5バイト長ですconvert nr to base nr+1
>インクリメントを使用できないため、余分なバイトが必要です。

a,b,x,y,z,Y,ZA小文字のアルファベットを含むから抽出されます。

A,B,C,D,E,F 数値は16進数に変換されます。

0-9 単純なインクリメント/デクリメントと定義済み変数です。


3

マーベラス、220バイト

数字ではない文字の場合、それは文字コードの2つの大文字の16進数です。たとえば、次のプログラム出力は次のとおりですA

41

そうでない数字の場合、次のコードで、文字コードの大文字の16進数で3置き換え2Fます-1

2F
++

のために3

66
>>

合計スコア:2 * 85 + 5 * 10 = 220。

通訳。

私の最初の試みはバブルガムでしたが、以前はキャラクターには機能しませんでした?...


3

Perl 6:921バイト

Pythonソリューションの翻訳。

各プログラムの形式say "\x<hex escape code>"は次のとおりです:

  • sput "\x73"
  • aput "\x61"
  • yput "\x79"

  • "\x20".say

  • "say chr 34
  • \say chr 92
  • xsay chr 120
  • 0say 1-1
  • 1say 3-2
  • 2します9say <n minus one>+1

参照とテストを容易にするために、改行で区切られたプログラムの完全なリストを以下に示します。

"\x20".say
say "\x21"
say chr 34
say "\x23"
say "\x24"
say "\x25"
say "\x26"
say "\x27"
say "\x28"
say "\x29"
say "\x2A"
say "\x2B"
say "\x2C"
say "\x2D"
say "\x2E"
say "\x2F"
say 1-1
say 3-2
say 1+1
say 2+1
say 3+1
say 4+1
say 5+1
say 6+1
say 7+1
say 8+1
say "\x3A"
say "\x3B"
say "\x3C"
say "\x3D"
say "\x3E"
say "\x3F"
say "\x40"
say "\x41"
say "\x42"
say "\x43"
say "\x44"
say "\x45"
say "\x46"
say "\x47"
say "\x48"
say "\x49"
say "\x4A"
say "\x4B"
say "\x4C"
say "\x4D"
say "\x4E"
say "\x4F"
say "\x50"
say "\x51"
say "\x52"
say "\x53"
say "\x54"
say "\x55"
say "\x56"
say "\x57"
say "\x58"
say "\x59"
say "\x5A"
say "\x5B"
say chr 92
say "\x5D"
say "\x5E"
say "\x5F"
say "\x60"
put "\x61"
say "\x62"
say "\x63"
say "\x64"
say "\x65"
say "\x66"
say "\x67"
say "\x68"
say "\x69"
say "\x6A"
say "\x6B"
say "\x6C"
say "\x6D"
say "\x6E"
say "\x6F"
say "\x70"
say "\x71"
say "\x72"
put "\x73"
say "\x74"
say "\x75"
say "\x76"
say "\x77"
say chr 120
put "\x79"
say "\x7A"
say "\x7B"
say "\x7C"
say "\x7D"
say "\x7E"

上記のリストをテストし、スコアを数えるために使用したコードは次のとおりです。

#!/usr/bin/env perl6

my $file = 'print_ascii_characters.p6';

my @expected = ' ' .. '~';
my @code     = $file.IO.lines;
my $code     = @code.join: ';';
my @got      = (run 'perl6', '-e', $code, :out).out.lines.map: |*.comb;

given +@expected, +@got, +@code -> ($e, $g, $c) {
    say "WRONG COUNT: Expected $e / output $g / source $c" and exit if not $e == $g == $c;
}

for @expected Z @got -> ($e, $g) {
    say "WRONG OUTPUT: Expected {$e.perl}, got {$g.perl}" and exit if $e ne $g;
}

for @expected Z @code -> ($char, $code) {
    say "COLLISION: {$char.perl} contained in {$code.perl}" if $code.match($char);
}

say "SCORE: ", @code.map(*.chars).sum;

@sch Perl 5では動作しますが、Perl 6で実行しようとしました。Perl6では、後にスペースsayが必要で、8進エスケープシーケンスがとして記述されてい\o77ます。別のPerl 5ソリューションを投稿してください。...)
smls

申し訳ありませんが、私はあなたの答えでperl 6の部分を見逃しました。
sch

3

Haskell、1874 1864 1856 1855 1795 1791 1589バイト、7 DNP

ほとんどのプログラムは、main=putChar '\xx'またはmain=putChar '\xxx'どこxx/ xxxチャーのアスキーコードが印刷されます。これは、14文字を除くすべての文字で機能します。

 !"#$%& ()*+,-./0123456789:;< >?@AB DEFGHIJKLMNOPQRSTUVWXYZ[ ]^_` bcdefg  jkl  o q s  vwxyz{|}~
       '                     =     C                        \    a      hi   mn p r tu        

ただし、数字の1 7 4バイトは保存できます(Christian Sieversに感謝!):

0   main=print$1-1
1   main=print$3-2
2   main=print$1+1
3   main=print$1+2
...

c(コード99)までの52個のプログラムは18バイトを使用し、残りの19個はそれぞれ19バイトを使用します。

部分スコア: 10*14 + 52*18 + 19*19 = 1437

残りの7文字について、次のプログラムが機能します。

    main=putChar$'\32'
'   main=putStr$pred<$>"("
C   main=putStr['\67']
\   main=putChar$pred ']'
h   main=putStr['\104']
p   main=interact(\_->['\112'])
u   main=interact(\_->['\117'])

部分スコア: 18 + 22 + 18 + 21 + 19 + 27 + 27 = 152

これにより、7つのDNPが残ります。 =aimnrt

各Haskellプログラムはメイン(main=)を定義する必要があるため、5つのDNPになります。、STDOUTに印刷するputCharputStrまたはinteract使用することができ、得tそしてrさらにDNPSとして。(がありますがprintprint 'a'印刷はされますが、含まれ'a'ませんa- とにかく。)Haskellには、番号が与えられた対応する文字を返す関数もありますが、それを使用するには必要です。trchrimport Data.Char

合計スコア: 1437 + 152 = 1589、7 DNP


1
オプションの改行を許可すると、我々はこのような数字を得ることができますmain=print$1-1などを
クリスチャンSieversの

pプログラムはpを使用します(ただし、で簡単に修正できますsucc
Christian Sievers

2

BBC Basic、422 413バイト

http://www.bbcbasic.co.uk/bbcwin/bbcwin.htmlからインタープリターを無料でダウンロード

Leaky Nunのおかげで9バイト節約されました。

一般的な形式

V.<character code>

32..99、12の特殊なケースを除く:56x4 = 224バイト

100..126:27x5 = 135バイト

12の特殊なケース:54バイト

ほとんどの数値は一般的な形式に従いますが、問題がどこにあるかを示すためにすべてをここに含めました。

最初の文字は、印刷される文字です。

. VDU46       :REM Full form of the command used in general form: send character 46 to VDU)
V P.CHR$86    :REM short for PRINT CHR$(86)
0 V.48       
1 V.49
2 V.50
3 V.51
4 V.52
5 P.1+4
6 V.54
7 V.55
8 V.56
9 V.57

なぜ使用V.48しないの0ですか?
リーキー修道女

@LeakyNun 9バイト保存、ありがとう!
レベルリバーセント

すごい迫力、持っているV.P.コマンドが常に存在して?
ベータ崩壊

@βετѧΛєҫαγはい。ただし、エディターは入力後にそれらを完全な単語VDUおよびPRINTに展開します(ただし、BASICコマンドラインでは展開せずに解釈されます)。後に続くほとんどの大文字.はキーワードに展開されます。この課題は、印刷不可能なASCIIの使用について厳密ですが、他の課題では、おそらくトークン化されたキーワード(ascii 127-255)は1バイトであると言えます。それは、私がその議論を試みたことがなく、通常両方のスコアを与えると言った。
レベルリバーセント

@LevelRiverStなるほど
Beta Decay

2

Minkolang 0.15、604バイト

ほとんどのキャラクターの場合、 "<char-1>"1+O.、おそらく最短の有効なプログラムでしょう。ただし、スタック上のコードポイントとして文字が格納されるという事実により、それらの多くは5バイト以下で乗算と加算によって生成できることを意味します。また、それぞれに注意しl, $1, $2, $3, $4, $5, $6, $lてください10, 11, 12, 13, 14, 15, 16, 100

フォーマット: <character>: <program>

 : 48*O.
!: $13*O.
": 66*2-O.
#: 57*O.
$: 66*O.
%: 66*1+O.
&: 4l*2-O.
': 3$3*O.
(: 4l*O.
): 4l*1+O.
*: ")"1+O.
+: "*"1+O.
,: $14*O.
-: 59*O.
.: "-"1+d$10pO-
/: "."1+O.
0: 68*O.
1: 77*O.
2: 5l*O.
3: 5l*1+O.
4: lZIO.
5: lZdIO.
6: 239**O.
7: 5$1*O.
8: 4$4*O.
9: 6l*3-O.
:: 6l*2-O.
;: 6l*1-O.
<: 6l*O.
=: 6l*1+O.
>: 6l*2+O.
?: 79*O.
@: 88*O.
A: 5$3*O.
B: 6$1*O.
C: 7l*3-O.
D: 7l*2-O.
E: 7l*1-O.
F: 7l*O.
G: 7l*1+O.
H: 89*O.
I: 89*1+O.
J: 89*2+O.
K: 355**O.
L: 89*4+O.
M: 7$1*O.
N: 6$3*O.
O: "N"1+d90pN.
P: 8l*O.
Q: 99*O.
R: 8l*2+O.
S: 8l*3+O.
T: 347**O.
U: 8l*5+O.
V: 8l*6+O.
W: 8l*7+O.
X: 8$1*O.
Y: 8l*9+O.
Z: 9l*O.
[: $l9-O.
\: $l8-O.
]: $l7-O.
^: $l6-O.
_: $l5-O.
`: 8$2*O.
a: $l3-O.
b: $l2-O.
c: 9$1*O.
d: $lO.
e: $l1+O.
f: $l2+O.
g: $l3+O.
h: $l4+O.
i: $l5+O.
j: $l6+O.
k: $l7+O.
l: $l8+O.
m: $l9+O.
n: l$1*O.
o: $l$1+O.
p: $l$2+O.
q: $l$3+O.
r: $l$4+O.
s: $l$5+O.
t: $l$6+O.
u: "t"1+O.
v: "u"1+O.
w: 7dl+*O.
x: 358**O.
y: $1d*O.
z: 53;3-O.
{: 53;2-O.
|: 53;1-O.
}: 53;O.
~: 53;1+O.

特記事項:

.: "-"1+d$10pO-

(試してみてください。) Minkolangには、コードボックス内の文字を変更する機能があります。そのため、このプログラムは、プログラムの停止に必要な-最後の文字をに置き換え.ます。同じよう"N"1+d90pN.O動作します。

4: lZIO.

(試してみてください。) lZ大文字と小文字のアルファベットをスタックにIプッシュし、スタックの長さである52(正確には「4」のコードポイント)をプッシュします。最良の部分は、最初にのソリューションを検討していたことで4$3*O.、4と13を掛けて52を取得しましたが、4が含まれていたため、できませんでした。

y: $1d*O.

(試してみてください。) dスタックの最上部を複製します。したがって、このコードは、プッシュ11、複製、および乗算を行います。これを記述する別の方法$12;O.は、同じバイトカウントを持つでした。

}: 53;O.

(試してみてください) ;はべき乗なので、これは125を得るために5 ^ 3します。


2

Groovy、1019バイト

私は別のGroovyソリューションを作成しました(以下を参照)が、それを提出した後、文字エスケープをもう少し掘り下げ、プログラムをさらに短縮する方法を見つけようとして、Groovyには8文字の文字エスケープがあることを発見しました知りませんでした。これにより、コードが大幅に簡素化され、残念ながら、私が思いついたほとんどすべての風変わりな回避策が不要になります。

また、CopperのPython 2ソリューションとほとんど同じように見えますが、基本的には作業を盗用したように見えます。あー

各プログラムの形式print'\<octal value>'は次のとおりです:

  • print'print''\<octal value>'(ただし、「印刷」の一致する文字でも進値に置き換え)
  • 0- 9print~-<next int>

文字ごとのプログラムの完全なリストを以下に示します。

    print'\40'
!   print'\41'
"   print'\42'
#   print'\43'
$   print'\44'
%   print'\45'
&   print'\46'
'   print'\47'
(   print'\50'
)   print'\51'
*   print'\52'
+   print'\53'
,   print'\54'
-   print'\55'
.   print'\56'
/   print'\57'
0   print~-1
1   print~-2
2   print~-3
3   print~-4
4   print~-5
5   print~-6
6   print~-7
7   print~-8
8   print~-9
9   print~-10
:   print'\72'
;   print'\73'
<   print'\74'
=   print'\75'
>   print'\76'
?   print'\77'
@   print'\100'
A   print'\101'
B   print'\102'
C   print'\103'
D   print'\104'
E   print'\105'
F   print'\106'
G   print'\107'
H   print'\110'
I   print'\111'
J   print'\112'
K   print'\113'
L   print'\114'
M   print'\115'
N   print'\116'
O   print'\117'
P   print'\120'
Q   print'\121'
R   print'\122'
S   print'\123'
T   print'\124'
U   print'\125'
V   print'\126'
W   print'\127'
X   print'\130'
Y   print'\131'
Z   print'\132'
[   print'\133'
\   print'\134'
]   print'\135'
^   print'\136'
_   print'\137'
`   print'\140'
a   print'\141'
b   print'\142'
c   print'\143'
d   print'\144'
e   print'\145'
f   print'\146'
g   print'\147'
h   print'\150'
i   'pr\151nt''\151'
j   print'\152'
k   print'\153'
l   print'\154'
m   print'\155'
n   'pri\156t''\156'
o   print'\157'
p   '\160rint''\160'
q   print'\161'
r   'p\162int''\162'
s   print'\163'
t   'prin\164''\164'
u   print'\165'
v   print'\166'
w   print'\167'
x   print'\170'
y   print'\171'
z   print'\172'
{   print'\173'
|   print'\174'
}   print'\175'
~   print'\176'

Groovy、1130バイト

8進エスケープが存在することを発見する前の以前のプログラム。もっと面白い、IMO。

各プログラムの形式print(--'<next char>')は次のとおりです:

  • -[~print(++'<previous char>')
  • &print(--"'")
  • prinSystem.out<<--'<next char>'
  • t'prin\u0074'(--'u')
  • (print'\u0028'
  • )print'\u0029'
  • 0- 9print~-<next int>

各キャラクターのプログラムの完全なリストは次のとおりです。

    print(--'!')
!   print(--'"')
"   print(--'#')
#   print(--'$')
$   print(--'%')
%   print(--'&')
&   print(--"'")
'   print(--'(')
(   print'\u0028'
)   print'\u0029'
*   print(--'+')
+   print(--',')
,   print(--'-')
-   print(++',')
.   print(--'/')
/   print(--'0')
0   print~-1
1   print~-2
2   print~-3
3   print~-4
4   print~-5
5   print~-6
6   print~-7
7   print~-8
8   print~-9
9   print~-10
:   print(--';')
;   print(--'<')
<   print(--'=')
=   print(--'>')
>   print(--'?')
?   print(--'@')
@   print(--'A')
A   print(--'B')
B   print(--'C')
C   print(--'D')
D   print(--'E')
E   print(--'F')
F   print(--'G')
G   print(--'H')
H   print(--'I')
I   print(--'J')
J   print(--'K')
K   print(--'L')
L   print(--'M')
M   print(--'N')
N   print(--'O')
O   print(--'P')
P   print(--'Q')
Q   print(--'R')
R   print(--'S')
S   print(--'T')
T   print(--'U')
U   print(--'V')
V   print(--'W')
W   print(--'X')
X   print(--'Y')
Y   print(--'Z')
Z   print(--'[')
[   print(++'Z')
\   print(--']')
]   print(--'^')
^   print(--'_')
_   print(--'`')
`   print(--'a')
a   print(--'b')
b   print(--'c')
c   print(--'d')
d   print(--'e')
e   print(--'f')
f   print(--'g')
g   print(--'h')
h   print(--'i')
i   System.out<<--'j'
j   print(--'k')
k   print(--'l')
l   print(--'m')
m   print(--'n')
n   System.out<<--'o'
o   print(--'p')
p   System.out<<--'q'
q   print(--'r')
r   System.out<<--'s'
s   print(--'t')
t   'prin\u0074'(--'u')
u   print(--'v')
v   print(--'w')
w   print(--'x')
x   print(--'y')
y   print(--'z')
z   print(--'{')
{   print(--'|')
|   print(--'}')
}   print(--'~')
~   print(++'}')

2

実際には383 382 381バイト

Megoのおかげで1バイト。

参照しやすいように、最初の列は文字コード、2番目の列は文字、3番目の列はコードです。

のコード0は単一のスペースです。

032   :32c
033 ! HN
034 " 9Fc
035 # :35c
036 $ :36c
037 % :37c
038 & :38c
039 ' :39c
040 ( :40c
041 ) 9R$N
042 * :42c
043 + :43c
044 , :44c
045 - :45c
046 . :46c
047 / :47c
048 0  
049 1 0Y
050 2 0P
051 3 1P
052 4 3u
053 5 2P
054 6 3!
055 7 3P
056 8 6F
057 9 NF
058 : 9P;+c
059 ; :59c
060 < :60c
061 = :61c
062 > :62c
063 ? :63c
064 @ :64c
065 A :65c
066 B :66c
067 C :67c
068 D :68c
069 E :69c
070 F :70c
071 G :71c
072 H :72c
073 I :73c
074 J :74c
075 K :75c
076 L :76c
077 M :77c
078 N :78c
079 O :79c
080 P :80c
081 Q :81c
082 R :82c
083 S :83c
084 T :84c
085 U :85c
086 V :86c
087 W :87c
088 X :88c
089 Y :89c
090 Z :90c
091 [ k$F
092 \ :92c
093 ] k$N
094 ^ :94c
095 _ :95c
096 ` :96c
097 a :97c
098 b :98c
099 c :12#"%x"%
100 d :100c
101 e :101c
102 f :102c
103 g :103c
104 h :104c
105 i :105c
106 j :106c
107 k :107c
108 l :108c
109 m :109c
110 n :110c
111 o :111c
112 p :112c
113 q 9PPc
114 r 9R$F
115 s :115c
116 t :116c
117 u :117c
118 v :118c
119 w 5!Dc
120 x 5!c
121 y 5!uc
122 z :122c
123 { :123c
124 | :124c
125 } :125c
126 ~ :126c

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

ゴルフの提案は大歓迎です。


:5:9P2*c
Mego

@Megoありがとう、追加しました。
リーキー修道女

2

フーリエ、306バイト、1 DNP

ほとんどすべてのプログラムは、nanが各文字の文字コードであるパターンに従います。例えば:

!       33a
"       34a
#       35a
$       36a
%       37a
&       38a
'       39a

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

そのため、例外をリストします。

0(ゼロ)

アキュムレータはゼロにプリセットされているため、単一の文字を使用してこれを表示できます。

o

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

1

ゼロと同様に、これはアキュムレーターを増分して1を取得します。

^o

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

5

5のASCIIコードは53なので、これを回避する必要がありました。

6vo

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

a

起因してa文字出力関数で、そこに文字aを生成する他の方法はありませんので、これは私の唯一のPROGRAMませんでした

ここですべてのプログラムを見る


2

Matlab、1238 1224バイト、2 DNP

主なパターンは次のとおりです。

disp([<char code> ''])

数字の場合、少し短くなります。

disp(<sum or difference of two other digits>)

キャラクターの[]'場合:

" " -- disp([0,''])
"[" -- disp(char(91))
"]" -- disp(char(93))
"'" -- disp(char(39))

dsからの文字dispfprintfthanks @Stewie Griffin)を使用して表示されます。ipしかし、そこにも属しているので、文字列をシフトして使用していevalます:

d -- fprintf([100 ''])
i -- eval(['ejtq)(j(*'-1 ''])
s -- fprintf([115 ''])
p -- eval(['ejtq)(q(*'-1 ''])

()ただし、dispまたはには両方の文字が必要なevalので、DNPです。


リスト全体を参照するには:

    char    char code   code                        length
            32          disp([0 ''])                12
    !       33          disp([33 ''])               13
    "       34          disp([34 ''])               13
    #       35          disp([35 ''])               13
    $       36          disp([36 ''])               13
    %       37          disp([37 ''])               13
    &       38          disp([38 ''])               13
    '       39          disp(char(39))              14
    (       40          DNP
    )       41          DNP 
    *       42          disp([42 ''])               13
    +       43          disp([43 ''])               13
    ,       44          disp([44 ''])               13
    -       45          disp([45 ''])               13
    .       46          disp([46 ''])               13
    /       47          disp([47 ''])               13
    0       48          disp(1-1)                   9
    1       49          disp(3-2)                   9
    2       50          disp(5-3)                   9
    3       51          disp(7-4)                   9
    4       52          disp(9-5)                   9
    5       53          disp(2+3)                   9
    6       54          disp(3+3)                   9
    7       55          disp(4+3)                   9
    8       56          disp(5+3)                   9
    9       57          disp(6+3)                   9
    :       58          disp([58 ''])               13
    ;       59          disp([59 ''])               13
    <       60          disp([60 ''])               13
    =       61          disp([61 ''])               13
    >       62          disp([62 ''])               13
    ?       63          disp([63 ''])               13
    @       64          disp([64 ''])               13
    A       65          disp([65 ''])               13
    B       66          disp([66 ''])               13
    C       67          disp([67 ''])               13
    D       68          disp([68 ''])               13
    E       69          disp([69 ''])               13
    F       70          disp([70 ''])               13
    G       71          disp([71 ''])               13
    H       72          disp([72 ''])               13
    I       73          disp([73 ''])               13
    J       74          disp([74 ''])               13
    K       75          disp([75 ''])               13
    L       76          disp([76 ''])               13
    M       77          disp([77 ''])               13
    N       78          disp([78 ''])               13
    O       79          disp([79 ''])               13
    P       80          disp([80 ''])               13
    Q       81          disp([81 ''])               13
    R       82          disp([82 ''])               13
    S       83          disp([83 ''])               13
    T       84          disp([84 ''])               13
    U       85          disp([85 ''])               13
    V       86          disp([86 ''])               13
    W       87          disp([87 ''])               13
    X       88          disp([88 ''])               13
    Y       89          disp([89 ''])               13
    Z       90          disp([90 ''])               13
    [       91          disp(char(91))              14
    \       92          disp([92 ''])               13
    ]       93          disp(char(93))              14
    ^       94          disp([94 ''])               13
    _       95          disp([95 ''])               13
    `       96          disp([96 ''])               13
    a       97          disp([97 ''])               13
    b       98          disp([98 ''])               13
    c       99          disp([99 ''])               13
    d       100         fprintf([100 ''])           17
    e       101         disp([101 ''])              14
    f       102         disp([102 ''])              14
    g       103         disp([103 ''])              14
    h       104         disp([104 ''])              14
    i       105         eval(['ejtq)(j(*'-1 ''])    24
    j       106         disp([106 ''])              14
    k       107         disp([107 ''])              14
    l       108         disp([108 ''])              14
    m       109         disp([109 ''])              14
    n       110         disp([110 ''])              14
    o       111         disp([111 ''])              14
    p       112         eval(['ejtq)(q(*'-1 ''])    24
    q       113         disp([113 ''])              14
    r       114         disp([114 ''])              14
    s       115         fprintf([115,''])           17
    t       116         disp([116 ''])              14
    u       117         disp([117 ''])              14
    v       118         disp([118 ''])              14
    w       119         disp([119 ''])              14
    x       120         disp([120 ''])              14
    y       121         disp([121 ''])              14
    z       122         disp([122 ''])              14
    {       123         disp([123 ''])              14
    |       124         disp([124 ''])              14
    }       125         disp([125 ''])              14
    ~       126         disp([126 ''])              14

[100 105 115 112](char-codes)のようなものは動作しdispますか?
リーキー修道女

どういう意味?どちらもdisp([100 105 115 112])文字列を生成しeval([100 105 115 112])ません。
パジョン

fprintfd ans s:に使用できますfprintf([115,''])。)= 2×7バイトを保存し、それを受賞提出しますが、ちょっとではないでしょう:14バイト、14バイト,,,です
Stewieグリフィン

またdisp([0 ''])、スペースが含まれています。disp([0,''])しません。
スチューウィーグリフィン

ありがとう また、のトリックにも感謝しfprintfます。
パジョン

2

ゼリー(非競合)、406 バイト

32Ọ
33Ọ
34Ọ
35Ọ
36Ọ
37Ọ
38Ọ
39Ọ
40Ọ
41Ọ
42Ọ
43Ọ
44Ọ
45Ọ
46Ọ
47Ọ
48Ọ
49Ọ
50Ọ
51Ọ
52Ọ
49+4Ọ
54Ọ
55Ọ
56Ọ
57Ọ
58Ọ
59Ọ
60Ọ
61Ọ
62Ọ
63Ọ
64Ọ
65Ọ
66Ọ
67Ọ
68Ọ
69Ọ
70Ọ
71Ọ
72Ọ
73Ọ
74Ọ
75Ọ
76Ọ
77Ọ
78Ọ
79Ọ
80Ọ
81Ọ
82Ọ
83Ọ
84Ọ
85Ọ
86Ọ
87Ọ
88Ọ
89Ọ
90Ọ
91Ọ
92Ọ
93Ọ
94Ọ
95Ọ
96Ọ
97Ọ
98Ọ
99Ọ
³Ọ
101Ọ
102Ọ
103Ọ
104Ọ
105Ọ
106Ọ
107Ọ
108Ọ
109Ọ
110Ọ
111Ọ
112Ọ
113Ọ
114Ọ
115Ọ
116Ọ
117Ọ
118Ọ
119Ọ
120Ọ
121Ọ
122Ọ
123Ọ
124Ọ
125Ọ
126Ọ

これにより、32〜126のすべての文字が出力されます。バイトカウントはhttps://mothereff.in/byte-counterで計算されます

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


1
これは有効な答えだとは思わない。まず、入力を許可されていません。2番目に、これは1つのプログラムであり、95 個のプログラムではありません。挑戦は言うIn a programming language of your choice, write 95 programs, each of which outputs a different one of the 95 printable ASCII characters without that character occurring anywhere in the program.
DJMcMayhemは

@DJMcMayhem [OK]を、私はそれを変更します
ソレン

DJは正しいです。これは明らかに無効です。
カルビンの趣味

@HelkaHombaは私のバイトカウントがすべてのプログラムの合計ですか?
ソレン

1
修正していただきありがとうございます。サイトへようこそ!ここで楽しんでください。また、ご存知のように、Jellyはカスタムコードページを使用しているため、この場合、UTF-8では503ですが、実際には406文字です。
DJMcMayhem

2

Befunge-93、530バイト

実際にその文字を使用せずに文字を出力する最も簡単な方法は、ASCII値を計算し、,(文字出力)コマンドを使用してレンダリングすることです。たとえば49*,@、ドル文字(ASCII 36、4 * 9)を出力します。ただし、ほとんどの値の計算には3バイト以上かかるため、これが最適な場合はほとんどありません。

3バイトの数値を生成する別の方法gは、プレイフィールドの最初のセルの(get)コマンドがgのASCII値を生成するという事実を利用することです(空のスタックにはゼロが設定されていると想定されるため、 0,0のプレイフィールド値を読み取ります)。このようにg1+,@、あなたを取得時間は、とg1-,@あなたが取得するF。これは明らかにオフセットの範囲で動作し、かつ以外の操作+-することも可能です。たとえばg3/,@、二重引用符を取得します。

これのバリエーションはg、スタックのすべてのゼロを残す別のコマンドで先行することです。そのため、0,0のプレイフィールドから値をまだ読み取っていますが、読み取られる文字は異なります。これにはもう1バイト必要ですが、より多くの値にアクセスできます。たとえば、0g1-,@スラッシュを:g1+,@取得し、セミコロンを取得します。その他の実行可能なプレフィックスが含まれ*+->\_。また、他の操作も可能であることに注意してください>g2*,@。垂直バーを取得します。

別のバリエーションとして、の前にgaを付けて1、0,0からではなく、0,1の空白セルから読み取るようにします。Befungeでは、空のセルはデフォルトでスペースで初期化されるため1g,@、スペースを1g1+,@取得し、感嘆符を取得します。

数字については、もっと怪しいトリックを使用できます。それらを文字として出力するのではなく、数値として出力します(ASCIIに相当するものよりも小さな数値を生成する方が簡単です)。だから、例えば、11+.@あなたに与えられる2を、特に特殊なケースに注意してください.@するために0、および!.@のための1。これの疑わしい部分は、Befungeの数値出力には数値の後にスペースが含まれるため、純粋な文字出力ではないということです。

使用できる別の怪しいトリックは、g上記のテクニックのバリエーションです。プレフィックスのBefungeコマンドに限定する代わりに、Befungeコマンドではない任意の文字を技術的に使用することもできます。ほとんどのインタープリターでは、認識されないコマンドは無視されるため、g最後の文字のASCII値が読み取られます。これにより、3バイトでは計算できない他のほとんどのASCII値を生成できます。一例として:RをQg1+,@取得します。

最後に、3つの特別なケースがあります。gがより少ない5バイトで生成することができないので、我々はに頼る必要があり"f"1+,@。カンマは最も複雑で、プレイフィールドの動的な変更が必要0g4-:80p @です:。同様の手法を使用してat文字を回避することもできますが、より効率的なハックは%(modulo)コマンドをターミネーターとして使用すること88*,%です。に%達すると、スタック上に何もないので、モジュロ計算はゼロによる除算を生成し、参照インタープリターではプログラムを終了します。

以下に、プログラムの完全なリストを1行に1つずつ示します。

1g,@
1g1+,@
g3/,@
57*,@
49*,@
1g5+,@
1g6+,@
1g7+,@
58*,@
1g9+,@
0g6-,@
0g5-,@
0g4-:80p @
59*,@
0g2-,@
0g1-,@
.@
!.@
11+.@
21+.@
31+.@
41+.@
51+.@
61+.@
71+.@
81+.@
>g4-,@
:g1+,@
:g2+,@
:g3+,@
:g4+,@
79*,@
88*,%
>g3+,@
>g4+,@
>g5+,@
>g6+,@
>g7+,@
>g8+,@
>g9+,@
89*,@
Hg1+,@
Ig1+,@
Jg1+,@
Kg1+,@
Lg1+,@
Mg1+,@
Ng1+,@
Og1+,@
99*,@
Qg1+,@
\g9-,@
\g8-,@
\g7-,@
\g6-,@
\g5-,@
\g4-,@
\g3-,@
\g2-,@
\g1-,@
_g3-,@
\g1+,@
g9-,@
g8-,@
g7-,@
g6-,@
g5-,@
g4-,@
g3-,@
g2-,@
g1-,@
"f"1+,@
g1+,@
g2+,@
g3+,@
g4+,@
g5+,@
g6+,@
g7+,@
g8+,@
g9+,@
tg3-,@
tg2-,@
tg1-,@
:g2*,@
tg1+,@
tg2+,@
tg3+,@
tg4+,@
tg5+,@
tg6+,@
tg7+,@
>g2*,@
tg9+,@
*g3*,@
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.