상징 대 문자


17

상징 대 문자

ASCII 문자는 일단 분리되어 다시 ! 당신의 세트는 문자기호 입니다.

편지들

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

상징

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

과제는 두 개의 프로그램을 작성하는 것입니다.

  1. 프로그램에서 글자 를 사용하지 않고 각 글자를 정확히 한 번 인쇄 하십시오.

  2. 프로그램에서 각 심볼 을 사용하지 않고 각 심볼을 정확히 한 번 인쇄 하십시오.

규칙

  • 프로그램이나 출력에 공백이 나타날 수 있습니다.
  • 비 ASCII 문자는 허용되지 않습니다.
  • 출력은 파일의 내용 또는 이름으로 표준 출력 또는 파일로 보내집니다.
  • 입력이 없습니다.
  • 출력은 한 세트 또는 다른 세트의 ASCII 문자 만 포함해야합니다.
  • 프로그램은 한 가지 예외를 제외하고 다른 언어 나 동일한 언어로 작성 될 수 있습니다.
  • 공백 언어는 단지 프로그램 중 하나를 사용할 수있다.
  • 표준 허점이 적용됩니다.

채점

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

최저 점수가 이깁니다!

노트 :

더 많은 제출을 장려하기 위해 여전히 프로그램 중 하나에 대한 솔루션으로 답변을 게시 할 수 있습니다. 이길 수는 없지만 여전히 멋진 것을 보여줄 수 있습니다.

이전 질문으로 아이디어를 불러 일으킨 Calvin 's Hobbies 에게 감사합니다 .


4
이것은 대부분의 언어에서 가능하지 않습니다 ... 예를 들어 Haskell = is
escapsable

1
@proudhaskeller 도전의 일부는 가능한 언어를 선택하는 것입니다.
hmatt1

(질문이 샌드 박스에있는 동안 이것을 생각해야한다는 것을 알고 있지만 "출력에 공백이 나타날 수 있습니다"규칙을 고려할 때 (문자)의 순서가 중요하지 않습니까?
FireFly

@FireFly 모든 주문은 괜찮습니다.
hmatt1

프로그램에 제어 문자 (코드 포인트 0-31 및 127)를 사용할 수 있습니까?
FUZxxl

답변:


7

총계 : 53 자

단일 언어의 총계 : 230 자, Pyth

1 부 : 골프 스크립트, 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 부 : 피스 , 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 부 : 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 문자열 구문 분석에서는 \1438 진 이스케이프 시퀀스입니다 c. 따라서이 답변은 다음 Python 스타일 코드와 동일합니다.

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

물론 파이썬에서는 인쇄를 사용하기 때문에 파이썬에서는 작동하지 않지만 printPyth에서의 인쇄는 암시 적이므로 작동합니다.


Pyth 솔루션은 질문이 제기 된 이후 추가 된 기능을 사용하지 않습니다.


Pyth를 어디서 배울 수 있습니까? 예에서?
Soham Chowdhury

@SohamChowdhury 예제는 시작하기에 좋은 곳입니다. 문서를 읽는 것이 아마도 다음 단계 인 기본 디렉토리의 doc.txt 일 것입니다. 마지막 단계는 -d (디버그) 플래그를 사용하여 직접 연주하는 것입니다. 이 소프트웨어는 매우 새롭기 때문에 더 좋은 것은 없습니다. 내가 아는 한, 3 명만이 사용했으며, 정기적으로 사용한 유일한 사람입니다. 행운을 빌어 요.
isaacg

23

파이썬 (기호, 87 82)

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

나는 파이썬의 문자열 모듈을 좋아합니다 ...

편집하다:

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

산출:

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

FALSE (문자, 21) DUP (문자, 20) :

거짓 솔루션 :

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

DUP 솔루션 (1 문자 더 짧음)

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

출력 (둘 다) :

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz

FALSE 통역사.


합계 : 102


1
좋은 와우! 나는 사람들이 이것을 파이썬으로 할 수 없다고 말한 것을 보았습니다.
hmatt1

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은 실제로 두 부분에 모두 답변합니다.
Geobits

10

Ruby 2의 파트 1 및 2, 56 + 484 = 540

1 부:

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

이 스타일의 Ruby에 대한 자세한 내용은 narfnme을 확인하십시오 .

2 부

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만 줄 바꿈을 출력 할 것이다, 모든 문자열은 큰 따옴표로 둘러싸인됩니다. 그러나 부작용으로 반복됩니다. 문자열 범위를 사용하여 문자 범위에 도달했을 때 확인하기 위해 첫 번째 루프와 두 번째 루프를 종료 할 수 있지만 문자열 리터럴을 작성할 수 없으므로 String()반환 된 기호 를 호출 하여 하나를 가져와야 합니다 (Ruby 2에서) 바이 def키워드. 그것이 여러 줄 구문이므로 문자열을 통해서만 비교할 수 있습니다.case여러 줄 표현식을 사용할 수 없으므로 리터럴을 메서드로 래핑해야합니다 (분명히 할당을 수행 할 수 없기 때문에). 마지막 루프는 종료하기가 더 어렵습니다. 에 중지해야합니다 ~. 운 좋게도 해당 범위의 ASCII 문자 ~중 오류가 발생하지 않고 인수없이 Fixnum에서 호출 할 수있는 유일한 문자 이므로 send chr마지막에있을 때 감지하고 반복을 중지하는 데 사용할 수 있습니다 .

이 스레드에서 최고 점수는 아니지만 지금까지 두 언어에 대해 동일한 언어를 사용하는 유일한 점수입니다. 예 루비.


1
당신의 두 번째 답변 전에도 +1을 받았지만, cuz '는 그것이 올 것이라는 것을 알고있었습니다. Ruby의 유연성을 한계까지 끌어 올리십시오.
16:23에 벡터

동일한 언어로 두 프로그램을 모두 제공하는 첫 번째 / 전용 답변의 경우 +1입니다. 지금까지 이것은 확실한 승자 IMO입니다. Ruby 2를 설치하지 않았지만 이것이 작동한다고 믿습니다.
Digital Trauma

8

애플 스크립트 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 바이트

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

>코드 들여 쓰기가 누락 되어 첫 번째를 잃어 버렸을 수 있습니다 . 그래서 그것은 인용으로 렌더링됩니다.
Falko

@Falko 주목 해 주셔서 감사합니다.
spocot

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 부 : 루비, 45 바이트

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

설명

  • az ( ?@...?[)가 포함 된 Range 와 AZ ( ?`...?{)가 포함 된 Range _는 splat 연산자 ( *)를 사용하여 배열의 요소가 됩니다.
  • 배열 의 0 번째 요소 ( "@") 및 27 번째 요소 ( ) 가로 설정됩니다 ."`"_nil
  • 배열 _Array#*stdout ( $>) 을 사용하여 함께 결합 되고 인쇄됩니다.

*$_두 번째 줄에서 p(또는 [])로 바꿀 수 있습니다 .
Jordan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.