상징 대 문자


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이라는 방법 내장 호출 chr및 succFixnum이라는 클래스를 열고 재정의 필요 inspect나에게 전화를 유발할 수 있기 때문에, x.inspect와 p 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.