シンボル対手紙


17

シンボル対手紙

ASCII文字は一度分割されており、再び!あなたのセットは、文字記号です。

手紙

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

シンボル

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

タスクは、2つのプログラムを作成することです。

  1. プログラムで文字を使用せずに、各文字を 1回だけ印刷します。

  2. プログラムでシンボルを使用せずに、各シンボルを 1回だけ印刷します。

ルール

  • プログラムまたは出力に空白が表示される場合があります。
  • ASCII以外の文字は使用できません。
  • 出力は、ファイルの内容または名前として標準出力またはファイルに送られます。
  • 入力なし。
  • 出力には、いずれかのセットのASCII文字のみが含まれている必要があります。
  • プログラムは、1つの例外を除いて、異なる言語または同じ言語で作成できます。
  • 空白の言語は、プログラムだけの1のために使用することができます。
  • 標準の抜け穴が適用されます。

得点

# of characters in program 1 +# of characters in program 2 =Score

最低スコアが勝ちます!

注意:

より多くの提出を促すために、プログラムの1つだけの解決策を含む回答を投稿できます。勝つことはできませんが、それでもクールなものを披露することができます。

前の質問でアイデアを刺激したカルビンの趣味に感謝します。


4
これはほとんどの言語では不可能です...たとえばHaskellの場合=は避けられません
誇りに思ってhaskeller 14

1
チャレンジの@proudhaskeller部分は、可能な言語を選択することです。
hmatt1 14

(質問がサンドボックスにある間にこれを考えるべきだったと思いますが)「出力に空白が表示される可能性がある」というルールを考えると、これは(文字|記号)の順序が重要でないことを意味しますか?
ホタル14

@FireFlyの注文は問題ありません。
hmatt1 14

プログラムに制御文字(コードポイント0〜31および127)を含めることは許可されていますか?
FUZxxl 14

回答:


7

合計:53文字

単一言語の合計:230文字、Pyth

パート1:Golfscript、15

91,65>123,97>++

出力:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

説明:

91,           Make the list, [0 1 .. 90]
65>           Take elements after the 65th, [65 66 .. 90]
123,97>       Same, but [97 98 .. 122]
+             Add the list above to the newline character that is automatically pushed to 
              the stack. List + str coerces to string by ascii encoding.
+             Same, for the other list.

パート2:Pyth、38

JhCeGLjkmCdbsrCdCPhGsrhCPeGChGsrJhhhhJ

出力:

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

説明:

G = "abcdefghijklmnopqrstuvwxyz"   Implicit.
k = ""                             Implicit.
d = " "                            Implicit.
JhCeG                              J = 1 + chr(end(G))          # J = 123
L                                  def d(b): return
 jk                                                k.join(
   m                                                      map(lambda d:
    Cd                                                                 chr(d),
    b                                                                  b))
s                                  print(s(                    #print is implicit.
 rCd                               range(chr(d),                 # chr(d) = 32
 CPhG                                    chr(upper(head(G))))    # chr("A") = 65
srhCPeGChG                         print(s(range(1+chr(upper(end(G))),chr(head(G)))
srJhhhhJ                           print(s(range(J, 1+1+1+1+J)))

ボーナスソリューション:

パート1:Pyth、192

%*$"%\143"$52(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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

説明:

$"%\143"$=> "%c"。$Python構文解析スタイルに切り替えます。Python文字列解析で\143は、は8進数のエスケープシーケンスですc。したがって、この答えは、次のPythonスタイルのコードと同等です。

("%c" * 52) % (65, 66, 67, ...)

もちろん、Pythonでの印刷ではを使用するため、これはPythonでは機能しませんprintが、Pythでの印刷は暗黙的であるため、機能します。


Pythソリューションでは、質問が行われた後に追加された機能は使用されません。


Pythはどこで学べますか?例から?
ソハムチョードリー

@SohamChowdhury例を始めるのに適した場所です。次のステップは、おそらくドキュメントを読むことです-プライマリディレクトリ内のdoc.txt。最後のステップは、-d(デバッグ)フラグを使用して、自分で遊んでみることです。ソフトウェアは非常に新しいため、これ以上のものはありません。私の知る限り、これまでに使用したのは3人だけで、定期的に使用したのは私だけです。頑張って、楽しんでください。
isaacg

23

Python(シンボル、87 82)

from string import punctuation
from string import digits
print digits
print punctuation

Pythonの文字列モジュールが大好きです...

編集:

from string import punctuation as p
from string import digits as d
print d
print p

出力:

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

(手紙、21) DUP(手紙、20):

偽解:

65[$91\>][$,$32+,1+]#

DUP sollution(1文字短く)

65[$91<][$,$32+,1+]#

出力(両方):

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz

FALSEの通訳。


合計:102


1
素敵な!私はこれをpythonではできなかった、よくできたと言う人を見てきました。
hmatt1 14

from string import*同様に機能し、バイト数を削減します。
aglasser

5
@aglasser ...しかし、使用して*、この文脈で禁じられています...
ɐɔıʇǝɥʇuʎs

4
あなたは正しいです、私が忘れていたとは信じられません*はシンボルハハでした。それがあなたがfrom string import punctuation, digitsどちらもしなかった理由を説明しています。ルールに従う素晴らしいソリューション。私の間違いについてごめんなさい!
aglasser

13

GolfScript(14文字)+ Deadfish x(116文字)= 130文字

91,65>{.32+}%+

そして

xxcxxcdddKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKxKDxxxccxxxxxxxxxxKxKxKxKxKxKDxxxcxxcxxKxKxKxK

2
これまでの4つの投稿の最初の投稿である+1は、実際には両方の部分に答えます。
ジオビット14

10

Ruby 2のパート1と2、56 + 484 = 540

パート1:

__=->_{(91..96)===_||$><<(''<<_);_>121||__[-~_]}
__[65]

このスタイルのRubyの詳細については、narfnmeをご覧ください

パート2(このビットはRuby 2.0+のみで、ruby-2.1.0で完全に動作しますが、以前のバージョンでは警告が表示される場合があります):

class Fixnum
def c
String def a
end
end
def b
String def A
end
end
def x
String def z
end
end
def y
String def Z
end
end
def inspect
case chr
when c
when b
when y
p succ
else
print chr
p succ
end
p
rescue
p
end
end
def x
String def z
end
end
def y
String def Z
end
end
class String
def inspect
p size
p
end
end
p String p
class String
def inspect
p ord
p
end
end
p y
class Fixnum
def inspect
case chr
when x
p succ
else
send chr
print chr
p
end
p
rescue
print chr
p succ
p
end
end
p x

それは大変でした。以下のようなFixnumかの方法で構築されたコーリングchrsuccFixnumかのクラスを開くと再定義する必要がinspect私はへの呼び出しをトリガーすることができるため、x.inspectp x。改行を印刷するだけで、すべての文字列が二重引用符で囲まれるnilように戻るために検査する必要がありpます。しかし、副作用として、ループします。文字列比較を使用して最初のループと2番目のループを終了して文字範囲に到達したことを確認できますが、文字列リテラルを書くことができないため、String()返されたシンボルを呼び出すことで取得する必要があります(Ruby 2で)ではdefキーワード。それは複数行の構文であり、文字列の比較はcase、複数行の式を取ることができないので、メソッドでリテラルをラップする必要があります(明らかに代入を行うことができないため)。最後のループの終了はより困難です。で停止する必要があり~ます。幸いなことに、その範囲のアスキー文字の~うち、エラーを発生させずに引数なしでFixnumで呼び出すことができるのは唯一の文字send chrです。

このスレッドでは最高のスコアではありませんが、これまでのところ、両方の部分で同じ言語を使用する唯一のスコアです。イェイ・ルビー。


1
2回目の回答の前でも+1されていました。Rubyの柔軟性を限界まで押し上げることを尊重します。
ベクトル化された14

同じ言語で両方のプログラムを提供する最初の/唯一の回答に対して+1。これまでのところ、これがIMOの明確な勝者です。私はRuby 2をインストールしていませんが、これが機能すると信じています。
デジタル外傷14

8

Applescriptのパート2、654

待って...「Applescriptでゴルフをするためのヒント」ページはどこですか?

global a
global b
global c
global s
on f at n
set end of b to a
end
on g at n
f at a
f at a
end
on h at n
g at a
g at a
end
on i at n
h at a
h at a
end
on j at n
repeat with t in system info
f at a
end
end
on m at n
set end of b to a
set c to count of b
set end of s to ASCII character c
end
on n at n
m at a
m at a
m at a
end
on o at n
repeat with t in system info
m at a
end
end
set a to random number
set b to a as list
j at a
j at a
set c to count of b
set s to ASCII character c
set s to s as list
o at a
n at a
n at a
n at a
n at a
n at a
j at a
i at a
g at a
f at a
n at a
m at a
m at a
j at a
i at a
g at a
n at a
m at a
display dialog s as text

出力:

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


1
Applescriptの解決策があることは知っていました。ここに、+ 1があります。
ɐɔıʇǝɥʇuʎs

4

CJam + AlphaBeta、62バイト


文字、CJam、12バイト

"[{"{,-26>}/

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

出力

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

使い方

"[{"{     }/   For each of the characters "[" and "{",
     ,         push an array of all ASCII characters before it
      -26>     and discard all but the last 26 characters.

シンボル、AlphaBeta、50バイト

ZaaAccctFUaCLOrEbbCLbCLbCLbCLdddACLbCLbCLgDLgDLgDL

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

公式のC ++インタープリターにはループが不可能になるバグがあり、Luaインタープリターの使用方法がわかりません。そのバグを修正しました。EsoLangページからサンプルプログラムを実行することで、意図したとおりに機能することを確認できます。

出力

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

使い方

Z      Switch register 4 to the position register.
aa     Set registers 1 to 2.
A      Copy the value from register 1 to register 2.
ccc    Add 30 to register 1 (result: 31).
tF     Set register 2 to the product of registers 1 and 2 (result: 64).
U      Add 10 to the position register (result: 10, i.e., the position of the next byte).
aCL    Add 1 to register 1 and print the corresponding ASCII character.
O      If register 1 != register 2, go to the position in the position register.
rEb    Set register 1 to the sum of registers 1 and 2 minus 1 (result: 127).
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
ddd    Subtract 30 from register 1 (result: 93).
A      Copy the value from register 1 to register 2.
CL     Print the ASCII character corresponding to register 1.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
bCL    Subtract 1 from register 1 and print the corresponding ASCII character.
gDL    Add 1 to register 2 and print the corresponding ASCII character.
gDL    Add 1 to register 2 and print the corresponding ASCII character.
gDL    Add 1 to register 2 and print the corresponding ASCII character.

3

BrainFuckパート1:80の 74バイト

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

>コードのインデントが欠落しているため、最初のコードが失われた可能性があります。そのため、引用としてレンダリングされます。
ファルコ14

@Falko気づいてくれてありがとう、私はそれを見逃した。
スポコット14

3

合計318バイト

同じ言語の両方のプログラムで答えを見つけたいと思っていましたが、今のところ何もありません。代わりにこれがあります:

パート1:純粋なbash、129バイト

_0=`$ 2>&1`
_0=${_0##*:}
_1=${_0:5:1}
_5=${_0:1:1}$_1${_0:11:1}
. <($_5<<<_2=\({${_1^}..$_1}\))
_3=${_2[@]:0:26}
$_5<<<$_3${_3,,}

出力:

$ ./letsym.sh
A B C D E F G H I J K L M N O P Q R S T U V W X Y Za b c d e f g h i j k l m n o p q r s t u v w x y z
$ 

パート2:GNU dc、189バイト

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzPzzzzzzzzzzzzzzzzzzzzzzzzzzzzPzzPzzPzzPzzPzzPzzBDPBEdPBFPdkvZP

出力:

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

2

まあ、あなたは知っている、誰かがそれを手に入れるべきです。

BrainFuckのパート1:174バイト

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+++++++
.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.

1

パート1:Ruby、45バイト

_=[*?@...?[,*?`...?{]
_[0],_[27]=*$_
$><<_*''

説明

  • az(?@...?[)を含むRangeとAZ(?`...?{)を含むRange _は、splat演算子(*)を使用して配列の要素になります。
  • 配列の0番目の要素("@")と27番目の要素("`"_はに設定されnilます。
  • 配列_Array#*、stdout($>)を使用して結合され、出力されます

*$_2行目をp(または[])に置き換えることができます。
ヨルダン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.