프로그램을 얼마나 빨리 말할 수 있습니까?


26

나는 최근에 저의 글쓰기를 돕기 위해 받아쓰기 소프트웨어를 다운로드하기로 결정했습니다. 그러나 단어를 말에서 기호로 바꾸고 다시 바꿔야하기 때문에 코딩 할 때 잘 작동하지 않습니다. 내가 모든 상징 인 난해한 언어로 코딩 할 때 훨씬 더 나빠 집니다.

받아쓰기 프로그램을보다 일관되게 사용하기 위해 문자 모드로 전환하기로 결정했습니다. 대신 각 문자의 이름을 말합니다. 문제 해결됨! 내 소설의 출시 날짜가 약간 지연되지만 ...

캐릭터의 이름이 길수록 더 오래 말할 수 있다고 가정하면, 내 프로그램 / 문장 중 일부를 철자하는 데 얼마나 걸립니까?

명세서

인쇄 가능한 ASCII로만 구성된 문자열이 제공되면 각 문자의 유니 코드 이름의 합계를 반환하십시오. 예를 들어, /라고 SOLIDUS7 개 문자 및 ALATIN CAPITAL LETTER A22 개 문자.

그러나 프로그램을 실행하려면 큰 소리로 말해야한다는 점을 기억하십시오. 따라서 점수는 각 문자의 유니 코드 이름 길이의 합과 같이 말하는데 걸리는 시간을 기준으로합니다.

테스트 사례 :

input => output입력에 후행 / 앞 공백이없는 형식 입니다.

A      => 22
/      => 7
Once upon a time...           => 304
slurp.uninames>>.comb.sum.say => 530
JoKing => 124
!" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        =>  1591
Double-check your \s on the last test case ;)   => 755
<say "<$_>~~.EVAL">~~.EVAL     => 388
,[.,]  => 58
19     => 19

규칙 :

  • 프로그램에 대한 입력은 인쇄 가능한 ASCII 문자, 즉 코드 포인트 32 (공백) ~ ​​126 (물결표)로만 구성됩니다.
    • 편의상 처리해야 할 문자 길이 목록은 다음과 같습니다. [5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5]
  • 다음은 프로그램 점수를 매기는 데 사용할 수 있는 참조 프로그램입니다.
    • Peter Taylor는 참조 프로그램이 일부 유니 코드 문자를 정규화한다고 지적했다 . 여전히 대부분의 솔루션에서 작동하지만 필요한 경우 언제든지 수정하십시오.
  • 문자가 실제로 어떻게 보이는지 말하고 있기 때문에 솔루션은 관련된 바이트가 아닌 표시 되는 문자 로 점수를 매 깁니다. 이것은 사용자 정의 인코딩이있는 언어를 대상으로합니다.
    • 전체 유니 코드 라이브러리를 기억하고 사용하는 이상한 문자를 말할 수 있다고 가정 할 수 있습니다.
  • 죄송합니다. Rogem이지만 답변은 표시 가능한 문자로 구성되어야합니다. 인쇄 할 수없는 것이 좋습니다. 문자를 크게 읽을 수 있어야합니다.
  • 무엇을 하든지 프로그램에서 사용하지 마십시오 .

9
ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM이것은 내 아이의 전체 이름이 될 것입니다
Quintec

1
이 프로그램은 단어 모드에서 6 점을 얻습니다 : 온라인으로 사용해보십시오!

2
참조 프로그램은 버그가 있습니다. 로 계산 되는 [이 테스트] ( tio.run/##dY5PC4JAEMXvfYphYcNsWcrSi@Ahrx3rlB223FTSXdk/… )를 고려하십시오 . \x[2126]\x[3a9]
피터 테일러

답변:


13

자바 8, 점수 846 838 822 816

ௐ->ௐ.map(ˇ->Character.getName(ˇ).length()).sum()

@tsh가로 교체하여 -8 점을 얻었_1 습니다 .
-22 점수 덕분 @는 ASCII 전용 교체 와 함께 ˇ$함께 .

온라인으로 사용해보십시오.

설명:

와는 ˇ대신의 사용 sc소문자이기 때문에 나는 일반적으로 모든 (20) (즉, 사용하는 것 LATIN SMALL LETTER S)하지만 (이 TAMIL OM) 8과 ˇ( CARON) 5입니다.

ௐ->                         // Method with IntStream parameter and integer return-type
  ௐ.map(ˇ->                 //  Map each character to:
      Character.getName(ˇ)  //   Get the name of the character
               .length())   //   Get the length of that name
   .sum()                   //  And after the map: sum all lengths together,
                            //  and return it as result

1
나는이 자바가 바이트와 점수 측면에서 05AB1E의 답을 어떻게 능가하는지 좋아한다.
Erik the Outgolfer

@EriktheOutgolfer Ikr. 내가 생각하는 내장. ;)
Kevin Cruijssen

@KevinCruijssen 그것은 당신이 필요없는 바이트를 절약합니다 push compressed integer 87235805968599116032550323044578484972930006625267106917841: P
Quintec

1
대신에 사용 _1하면 일부 포인트가 절약됩니다.
tsh

1
@KevinCruijssen Peter Taylor ( OHM SIGN) 의 길이는 8 자입니다. 또한 하하 나는 그것이 유효하지 않다는 것을 알지 못했습니다 .C #에서 유효하고 Peter도 사용했기 때문에 가정했습니다 _1( 짧은 변수 이름을 찾는 프로그램 , 상자 문자를 사용할 수 없음)
ASCII 전용


7

JAPT v2.0a1 -x, 스코어 926 908 875 865 829 791 789

문자 배열로 입력을받습니다.

®cg`061742//0.450./..//.2/5117385`c+51 r\A_p26}  n# 

TIO에서 시도 하거나 모든 테스트 사례를 실행하십시오.

( APOSTROPHEJapt가 동일한 입력 문자열에서 작은 따옴표와 큰 따옴표를 모두 처리 할 수 ​​없으므로 TIO의 6 번째 테스트 케이스에서 생략 됨)


설명

®cg`...`c+51 r\A_p26}  n#      :Implicit input of character array
®                              :Map
 c                             :  Character code
  g                            :  Index into (0-based, with wrapping)
   `...`                       :    The string described below
        c+51                   :    Increment the codepoint of each by 51 (="8cKidj55gebbc9agh895c97a99baa9bba59ebhddMjfkh")
                               :    (Space closes the above method)
             r                 :    Replace
              \A               :      RegEx /[A-Z]/g
                _              :      Pass each match through a function
                 p26           :        Repeat 26 times
                    }          :      End function
                               :    (Space closes the replace method)
                               :  (Space closes the indexing method)
                       n       :  Convert to integer
                        #      :    From base 32 (note the trailing space)
                               :Implicitly reduce by addition and output

문자열 구축

(점수에는 각 수정을 취소하는 데 필요한 단계 및 추가 문자가 포함됩니다)

  1. 배열은 2161 의 기준점 점수를 주었다 .
  2. 기본에서 각 문자를 단일 문자로 변환 >=23하고 점수가 1832 인 문자열에 결합합니다 .
  3. 모두 실행을 교체 m하고 k하나의 대문자와 득점 963 .
  4. 여전히 비싼 문자가 너무 많았 기 때문에 다음에는 모든 문자의 코드 포인트를 줄여서 제거하려고했습니다. 5코드 포인트가 가장 낮은 문자 ( 53)이므로 52로 시작하여 756 을 얻었습니다.
  5. 문자열에 문자를 남기지 않는 모든 숫자를 시도한 후 51최고 점수 738
  6. 마지막으로, 따옴표를 약간 더 싼 백틱으로 바꾸면 734 점을 얻었습니다 . Japt의 백틱은 일반적으로 압축 된 문자열을 둘러싸고 압축 해제하는 데 사용되지만 운 좋게도이 문자열의 문자는 Shoco의 라이브러리에 포함되지 않습니다

따라서 마지막 문자열에는 다음 코드 포인트의 문자가 포함됩니다.

[5,48,24,54,49,55,2,2,52,50,47,47,48,6,46,52,53,5,6,2,48,6,4,46,6,6,47,46,46,6,47,47,46,2,6,50,47,53,49,49,26,55,51,56,53]

4

05AB1E , 963

Îv•Fδà‚<0?9½mΣ@×ƶC₁vc-™uΔ_ε'•21вεD3‹i22α₂и}}˜yÇ32-è+

온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .

설명:

Î               # Push 0 and the input-string
 v              # Loop `y` over the characters of this input-string:
  Fδà‚<0?9½mΣ@×ƶCvc-™uΔ_ε'•
               '#  Push compressed integer 87235805968599116032550323044578484972930006625267106917841
   21в          #  Converted to Base-21 as list: [5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,0,19,15,20,17,8,12,2,18,13,19,5]
    ε           #  Map over this list:
     D3i       #   If the value is smaller than 3:
         22α    #    Take the absolute difference of this value with 22
            ₂и  #    Repeat it 26 times as list
    }}          #  Close the if-statement and map
      ˜         #  Flatten the list
       yÇ       #  Get the unicode value of the current character
         32-    #  Subtract 32
            è   #  Index it into the list of integers
             +  #  And add it to the sum
                # (and output the sum implicitly as result after the loop)

이 05AB1E 팁을 참조하십시오 (섹션은 큰 정수 를 압축하는 방법 ?정수 목록을 압축하는 방법)? ) 이유를 이해하는 •Fδà‚<0?9½mΣ@×ƶC₁vc-™uΔ_ε'•21в것입니다 [5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,0,19,15,20,17,8,12,2,18,13,19,5].


4

C # (Visual C # 대화 형 컴파일러) (점수 1627 1116 1096 1037 1019 )

Ω=>Ω.Sum(ˇ=>(31&-ˇ)>5&ˇ>62?22-ˇ/91*2:"♁♌♊♇♇♈♅♆♌♍♄♅♁♈♅♃♆♅♅♇♆♆♅♇♇♆♁♅♊♇♍♉♉♏♋♐♍♄♈♎♉♏♁"[ˇ-6-ˇ/33*26]-9788)

이것은 내장 데이터베이스를 사용하지 않습니다. 문자와 조회 테이블을위한 특수 케이스.

온라인 테스트 스위트 .

변수를 포함하여 대부분의 문자가 범위 내에 있지 않기 때문에 자체 점수를 매길 수 없습니다. CARONOHM SIGN조회 테이블을 인코딩하는 데 사용되는 및 조디악 기호를 .

많은 제안에 대한 ASCII 전용 덕분 입니다.


어떤 스코어링 프로그램을 사용 했습니까
ASCII 전용

tio.run/##NZDrdpNAFIX/z1OMY0wgwhCg0NAEanpT22jVaquGiAQnYbgMhIHWGJO36gv0xSJrBf@cdS57r72@E3A54HR3UbFgyMuCsoVEWenM7d3To@08PeKbKhU82xG2suDJdgd2xLauikPNbLc9R9eONU32FFPtakeI5CyOExrly5CShC4iSuMoonEcEcriZZryrFyGSZFygiZebdP1rmZOZcsUdwMwzwriB6Fw7xfQh5RBRh4m0zVAIyRBRYGaBpCybw8BumYBgVWesVpb0pRgjPc3vXcAEE@qIscVo8xPCXccHGTpDPMqxdxf7XWG3gPoMruqifcLVauNz1wEn7detDuC2H0pyVjpqZp@YJiHfetoMLSd41ejk9Oz84vXb95eXo3fvb/@8PHTzecvt3dfv32fuO70h/fTnwW/yHwR0ihOUpbly4KX1f3D79Wf9d/NtskyLBWgs6yaJUQOQhLEcJVVBXRdDmukMiQw8XkJS1KXwOcEDsQG3TAAGtYU0EXDludst/j8djR20f@u@UK/D5A0wdK0oa1H1WrCLbARwV1BSzKmjAgttPYly9hAaDsQrueCL26QONj9Aw
ASCII 전용

2
@ASCII 전용으로 아래의 Python 답변을 사용했습니다. Ω는 U + 2126이다 : 자바 대답은 또한 문제는 레퍼런스 솔루션은 버그가 것 같다 1627을 제공 옴 SIGN 하지 그리스어 대문자 OMEGA.
피터 테일러

1
점수 5 이름 : ˇ, C #에서 허용하는 8보다 짧은 다른 이름은 없으며 Java 프로그램으로도 확인되지 않음
ASCII 전용

1
@Kevin, 이전 의견에 따르면 참조 구현은 버그가 있습니다. 소스 문자 OHM SIGN을 GREEK CAPITAL LETTER OMEGA로 변환하기 위해 정규화를 적용하고 있다고 생각합니다.
피터 테일러

4

아르 자형; 점수 : 3330 1586 1443

내장 기능이 없기 때문에 R에서도 어려움이 있습니다.

글쎄 지금 코드는 대부분 @ Giuseppe 's이지만 괜찮습니다. *를 ~로 바꾸고 s를 점으로 바꾸면 골프를 조금 더 편집 할 수있었습니다.

비전 마법 "숫자 시퀀스의 UTF8로 인코딩 된 버전" 을 사용하여 1443 년까지 줄인 @Nick Kennedy에게 감사합니다.

function(.)sum((c(+",752230178/0,30.1002110221,052844",61~26,+":6;8/3",59~26,+"94:,")-39)[+.-31]);`+`=utf8ToInt;`~`=rep

온라인으로 사용해보십시오


1769 포인트 -최소한의 값 압축을 시도합니다 ...
Giuseppe

2
또한, utf8ToInt골프에 매우 유용한 명령입니다 :-) 한 달 정도 PPCG에 가본 적이 없으므로 R에서 골프를 타는 새로운 사람들을 만나는 것이 좋습니다!
주세페

아, 압축 방법이 있었지만 utf8ToInt를 알지 못했습니다. 오늘 밤 / 내일이 작업을해야합니다.
CT 홀


1
1443까지 : tio.run/##xc09DoIwFADgu3ShTR/… 숫자 시퀀스의 UTF8 인코딩 버전 사용.
Nick Kennedy


2

펄 5 -pl , 723

s,\N{OX}*.,_charnames'viacode ord$&,ge,$_=y,,,c

온라인으로 사용해보십시오!

설명

s,        ,                        ,ge  # Replace globally
  \N{OX}*   # zero or more OX characters 🐂, loads the
            # _charnames module as side effect,
         .  # any character
           _charnames'viacode ord$&  # with its Unicode character name
                                     # (using old package delimiter).
                                      ,$_=y,,,c  # Set $_ to its length


1

C # (Visual C # 대화 형 컴파일러) , 점수 : 4007 3988 3759 3551 2551

ˇ=>ˇ.Sum(_=>new[]{5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5}[_-32])

피터 테일러의 솔루션에 위의 불만이 있습니다. 간단한 조회 테이블을 지적한 Peter Taylor 덕분에 이전 사전 솔루션보다 낫습니다.

온라인으로 사용해보십시오!


이것은 직접 조회 테이블보다 훨씬 나쁩니다 : _1=>_1.Select(_2=>new int[]{5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5}[_2-32]).Sum()2786 점.
Peter Taylor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.