스크래블 득점자


42

도전:

대문자 또는 소문자 문자열을 입력으로 선택하고 (선택 사항) 영어 로 된 스크래블 게임에서 문자열이받을 점수를 계산하십시오 .

규칙 :

각 글자의 점수는 다음과 같습니다 (게임 버전이 다른 경우에도 사용).

1 point: E, A, I, O, N, R, T, L, S, U
2 points: D, G
3 points: B, C, M, P
4 points: F, H, V, W, Y
5 points: K
8 points: J, X
10 points: Q, Z

문자열의 점수는 단순히 사용 된 각 문자의 점수의 합계입니다. 사용 가능한 타일이 충분하다고 가정 할 수 있으므로 긴 단어와 같은 문자가 많은 단어가 유효한 입력입니다.

테스트 사례 :

ABC       ->    7
PPCG      ->   11
STEWIE    ->    9
UGPYKXQ   ->   33
FIZZBUZZ  ->   49
ABCDEFGHIJKLMNOPQRSTUVWXYZ  -> 87

각 언어에서 가장 짧은 답변이 이깁니다! 입력 및 출력 형식은 유연하므로 원하는 경우 입력을 문자 배열 (대문자 또는 소문자)로 사용할 수 있습니다.


6
MATLAB / Octave 솔루션을 기대하고 있습니다. 나의 모든 시도는 엄청나게 길었다 ... = /
Stewie Griffin

4
Beatnik 솔루션을 기대하고 있습니다. Cuz, 당신도 알다시피, 그것은 그 일을위한 올바른 도구 일 것입니다.
Giuseppe

@StewieGriffin 85 바이트가 끔찍하게 계산됩니까?
Luis Mendo

3
Mathematica가 내장되어 있지 않습니까?
sergiol

1
@manassehkatz 당신은 확실히 그것을 가야한다! 기본 사이트에 게시하기 전에 샌드 박스 에 도전 과제를 게시하여 피드백을 받고 도움을받는 것이 좋습니다 . 복잡한 문제는 피드백없이 바로 잡기가 어렵다.
Stewie Griffin

답변:



10

하스켈 , 86 84 바이트

f s=length s+sum[n|x<-s,(n,y)<-zip(9:7:[1..])$words"QZ JX DG BCMP FHVWY K",x`elem`y]

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

설명

대부분의 문자는 1의 점수를 부여하므로이를 추적 할 필요가 없습니다. 대신 각 점수를 줄인 다음 (1 바이트 절약 10) 결과 길이에 문자열의 길이를 추가하십시오.

-2 바이트에 대해 @nimi 에게 감사드립니다 (단어를 재정렬하고 [1..]대신 사용 [4,3..])!


1
zip[1..]$words"DG BCMP FHVWY K . . JX . QZ"같은 길이의 다른 대안을 제공합니다
Angs

10

옥타브 , 50 바이트

@(t)'				'/3*sum(65:90==t')'

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

도전은 받아 들였다. 설명:

@(t)             % Define anonymous function taking a single argument t.
    ' ... '/3    % Row vector with letter scores. Corresponds to char([1 3 3 2 ...]*3). 
                 % The factor 3 was necessary to avoid a newline.

*                % Dot product (yes, * is dot product, .* is not. Go figure). Equivalent to sum of element-wise products.
     65:90       % Alphabet
          ==t'   % Broadcast equality with input string.
 sum(         )  % Sum this matrix. Gives the count of each letter in the alphabet
               ' % Transpose into column vector for dot product

매우 영리한! 인쇄 할 수없는 것을 사용하는 것은 좋은 터치였습니다! :)
Stewie Griffin

@StewieGriffin 비교할 때 1 바이트 밖에 안되지만 -47코드 골퍼입니다 !
Sanchises

1
한숨. 잘하고 골프 아웃. ==옥타브에서 그런 식으로 사용할 수 있다는 것을 몰랐습니다 . MATLAB에서 작동하지 않습니다. 알아 둘만 한.
Tom Carpenter

2
@TomCarpenter 나는 상처에 소금을 문지르는 것을 의미하지는 않지만 이것을하는 '오래된'방법은 bsxfun61 바이트에서 짧습니다 : 온라인으로보십시오!
Sanchises

3
WAT 50 bytes I do n't even
Luis Mendo

9

Beatnik , 733 바이트

실제로해야했기 때문에 여기 있습니다. 디버깅하고 몇 가지 과제를 제공하는 것은 정말 불쾌했습니다.

입력은 대문자 여야합니다. 출력은 단항입니다 (그래도 괜찮습니까?)

J K ZZZZZZK Z ZD ZB ZZZZZZZZZZZZZZZZZA K A Z ZD ZB ZZZZZZZZZZZZZZZKF K A Z ZD ZB ZZZZZZZZZZZZZZZB K A Z ZD ZB ZZZZZZZZZZZZZZZ K A Z ZD ZB ZZZZZZZZZZZZZZKD K A Z ZD ZB ZZZZZZZZZZZZZD K A Z ZD ZB ZZZZZZZZZZZZZD K A Z ZD ZB ZZZZZZZZZZZZ K A Z ZD ZB ZZZZZZZZZZZZB K A Z ZD ZB ZZZZZZZZZKA K A Z ZD ZB ZZZZZZZZZKF K A Z ZD ZB ZZZZZZZZZZK K A Z ZD ZB ZZZZZZZZZB K A Z ZD ZB ZZZZZZZZZB K A Z ZD ZB ZZZZZZZZKD K A Z ZD ZB ZZZZZZZK K A Z ZD ZB ZZZZKB K A Z ZD ZB ZZZZZZKF K A Z ZD ZB ZZZZZZB K A Z ZD ZB ZZZZZFB K A Z ZD ZB ZZZZZA K A Z ZD ZB ZZZAK K A Z ZD ZB ZZZ K A Z ZD ZB ZD K A Z ZD ZB ZKB K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K ZZZZKF KF K A ZKA ZZZZZZZZZZZZZZZZZZY

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

일반적인 과정은 다음과 같습니다

  • 입력에서 문자를 얻다
  • 빼기 65
  • 결과가 0인지 확인
    • 0이 지정된 양의 단어를 점프하면.
    • 그렇지 않으면 1을 빼고 점검을 반복하십시오.
  • 점프 대상은 푸시 인쇄 작업이며 프로그램 시작으로 돌아가는 루프입니다.

오류로 끝납니다.

더 완전한 설명 :

J K ZZZZZZK Z ZD               # Get input and subtract 65
ZB ZZZZZZZZZZZZZZZZZA K A Z ZD # Character A - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZZZZKF K A Z ZD  # Character B - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZZZZB K A Z ZD   # Character C - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZZZZ K A Z ZD    # Character D - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZZZKD K A Z ZD   # Character E - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZZD K A Z ZD     # Character F - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZZD K A Z ZD     # Character G - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZ K A Z ZD       # Character H - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZZZB K A Z ZD      # Character I - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZKA K A Z ZD        # Character J - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZKF K A Z ZD        # Character K - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZZK K A Z ZD        # Character L - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZB K A Z ZD         # Character M - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZZB K A Z ZD         # Character N - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZZKD K A Z ZD         # Character O - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZZK K A Z ZD           # Character P - if 0 jump to print, otherwise subtract 1
ZB ZZZZKB K A Z ZD             # Character Q - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZKF K A Z ZD           # Character R - if 0 jump to print, otherwise subtract 1
ZB ZZZZZZB K A Z ZD            # Character S - if 0 jump to print, otherwise subtract 1
ZB ZZZZZFB K A Z ZD            # Character T - if 0 jump to print, otherwise subtract 1
ZB ZZZZZA K A Z ZD             # Character U - if 0 jump to print, otherwise subtract 1
ZB ZZZAK K A Z ZD              # Character V - if 0 jump to print, otherwise subtract 1
ZB ZZZ K A Z ZD                # Character W - if 0 jump to print, otherwise subtract 1
ZB ZD K A Z ZD                 # Character X - if 0 jump to print, otherwise subtract 1
ZB ZKB                         # Character Y - if 0 jump to print, otherwise subtract 1
K ZZZZKF KF                    # Jump Point for print 1111111111
K ZZZZKF KF                    #
K ZZZZKF KF                    # Jump Point for print 11111111
K ZZZZKF KF                    #
K ZZZZKF KF                    #
K ZZZZKF KF                    # Jump Point for print 11111
K ZZZZKF KF                    # Jump Point for print 1111
K ZZZZKF KF                    # Jump Point for print 111
K ZZZZKF KF                    # Jump Point for print 11
K ZZZZKF KF                    # Jump Point for print 1
K A ZKA ZZZZZZZZZZZZZZZZZZAAAA # Jump back to start


@ jimmy23013 아주 좋은, 당신은 그것을 게시해야합니다.
MickyT

8

Brain-Flak , 210, 204, 198, 184 , 170 바이트

({<([{}]<>(({}{}))(([][][][][])<((([]())<([][])>))((((()))))>)[](((()()())<((()))>)((())()()()()))((())()()())((()())()())[]((((())())()))(())){({}<{}>())}>{}{}<{{}}><>})

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

14 바이트를 절약 한 @JoKing에게 감사드립니다!

읽을 수있는 버전 :

({              # For each character

                # Push array of letter scores
                # Also adjust character to 1-indexing
        <([{}]<>
        (({}{}))    # Push 2 0s
        (([][][][][])   # 10
        <((([]())   # 4
        <([][])>    # 8
        ))      # 4,4
        ((((()))))> # 1,1,1,1
        )       # 10
        []      # Add 12 to difference
        (((()()())  # 3
        <((()))>    # 1,1
        )       # 3
        ((())()()()())) # 1, 5
        ((())()()())    # 1, 4
        ((()())()())    # 2, 4
        []      # Add 22 to difference
        ((((())())()))  # 1,2,3
        (())        # 1
        )   # Push 65-char

        {({}<{}>())} # Index character into score array
        >
        {}{}         # Add score to running total
        <{{}}><>     # Clear the stack

})               # Implicit print of total score


2
주어진 '읽기 가능'에 대한 정의 :)
Matt Lacey

설명을 명확히하고 편집하기 위해 편집했으며 문제가 있으면 언제든지 롤백하십시오.
Kamil Drakari

7

Pyth, 40 바이트

sm+2x.e}dbc." zØÍ jÙ¹>;%OG5§"\ 1

여기 사용해보십시오

설명

sm+2x.e}dbc." zØÍ jÙ¹>;%OG5§"\ 1
 m                              Q  For each character in the (implicit) input...
    x.e  b                     1   ... find the first index in...
          c." zØÍ jÙ¹>;%OG5§"\     ['dg','bcmp','fhvwy','k','','','jx','','qz']
       }d                          ... containing the character...
  +2                               ... 2-indexed.
s                                  Take the sum.



6

자바 8, 75 71 70 바이트

s->s.chars().map(c->"\n\n".charAt(c-65)).sum()

"02210313074020029000033739".charAt(c-65)-47인쇄 할 수없는 (및 2 \n) 로 변경 하여 -1 바이트 이므로 -47제거 할 수 있습니다. @Sanchises의 Octave answer에서 영감을 얻었습니다 .

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

s->          // Method with String parameter and integer return-type
  s.chars()  //  Loop over the characters as IntStream
   .map(c->"\n\n".charAt(c-65))
             //   Convert the character to its value
   .sum()    //   And sum it all together


5

젤리 , 19 바이트

Oị“ÆẠḃbṂƬɠF#ṁ²’ḃ⁵¤S

정수를 반환하는 대문자 목록을 허용하는 모나드 링크

온라인으로 사용해보십시오! 또는 테스트 스위트를 참조하십시오.

어떻게?

Oị“ÆẠḃbṂƬɠF#ṁ²’ḃ⁵¤S - Link: list of characters
O                   - ordinals ('A'->65, B->66...)
                 ¤  - nilad followed by link(s) as a nilad:
  “ÆẠḃbṂƬɠF#ṁ²’     -   literal 14011114485013321424185131
                ⁵   -   literal 10
               ḃ    -   bijective-base = [1,3,10,1,1,1,1,4,4,8,4,10,1,3,3,2,1,4,2,4,1,8,5,1,3,1]
 ị                  - index into (1-based & modular) (vectorises)
                    -  i.e. mapping from: O P  Q R S T U V W X Y  Z A B C D E F G H I J K L M N)
                  S - sum

5

R , 90 63 바이트

function(W,u=utf8ToInt)sum(u('

')[u(W)-64])

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

입력을 대문자 문자열로 사용합니다. R은 인쇄 할 수없는 문자열과 여러 줄 문자열을 문제없이 처리하므로 좋습니다. 이제 우리는 거의 두 배의 외부 패키지입니다!

그리고 CRAN에는 많은 랜덤 상품이 있기 때문에 :

R + ScrabbleScore 31 바이트

ScrabbleScore::sws(scan(,""),F)

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

안타깝게도 sws기본적으로 유효성을 검사합니다.


점수 목록과 함께 플레이하고 부부를
었다

트윗 담아 가기 나는 인쇄 할 수없는 것들과 함께 놀았고 utf8ToInt대신 재사용 match하고 몇 가지 더 다운받을 수있었습니다!
Giuseppe

4

이모티콘 코드 , 358 바이트

🐖🔥➡️🔡🍇🍮s 0🔂l🍡🐕🍇🍮s➕s🍺🐽🍯🔤a🔤1🔤e🔤1🔤i🔤1🔤l🔤1🔤n🔤1🔤o🔤1🔤r🔤1🔤s🔤1🔤t🔤1🔤u🔤1🔤d🔤2🔤g🔤2🔤b🔤3🔤c🔤3🔤m🔤3🔤p🔤3🔤f🔤4🔤h🔤4🔤v🔤4🔤w🔤4🔤y🔤4🔤k🔤5🔤j🔤8🔤x🔤8🔤q🔤10🔤z🔤10🍆🔡l🍉🍎🔡s 10🍉

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

설명:

변수 이름을 한 글자에서 더 의미있는 단어로 변경하고 코드의 일부를 확장하여 언어에 익숙하지 않은 사람들이 더 읽기 쉽도록 코드를 확장했습니다. 확장 된 프로그램을 여기서 테스트 할 수 있습니다 .

🐋🔡🍇      👴 define a class that takes a string
 🐖🔥➡️🔡🍇    👴 define a method that returns a string
  🍦values🍯    👴 create int dictionary
   🔤a🔤1 🔤e🔤1 🔤i🔤1 🔤l🔤1 🔤n🔤1 🔤o🔤1 🔤r🔤1 🔤s🔤1 🔤t🔤1 🔤u🔤1 🔤d🔤2 🔤g🔤2
   🔤b🔤3 🔤c🔤3 🔤m🔤3 🔤p🔤3 🔤f🔤4 🔤h🔤4 🔤v🔤4 🔤w🔤4 🔤y🔤4 🔤k🔤5 🔤j🔤8 🔤x🔤8
   🔤q🔤10 🔤z🔤10
  🍆        👴 ^ dictionary contains letters(keys) and their numerical values

  🍮score 0                         👴 declare 'score' variable and set to 0
   🍦iterator🍡🐕                     👴 transform input string to iterator
    🔂letter iterator🍇                👴 iterate over each byte in input string
     🍮score➕score 🍺🐽values 🔡letter   👴 add value of each letter to score
   🍉
  🍎🔡score 10    👴 return the score as a string
 🍉
🍉

🏁🍇          👴 begin the program here
 😀🔥🔤abc🔤    👴 call scoring method and print the score
 😀🔥🔤ppcg🔤    👴 repeat with other test cases
 😀🔥🔤stewie🔤
 😀🔥🔤fizzbuzz🔤
 😀🔥🔤abcdefghijklmnopqrstuvwxyz🔤
🍉

7
아야 .. 내 눈 .. golf.se에 특정 언어를 숨기는 옵션이 있습니까? ^^
Olivier Dulac

1
@OlivierDulac 아마도 브라우저가 이모티콘을 특수하게 렌더링하지 못하게하는 방법이있을 것입니다. 각각 표준 유니 코드 흑백 문자가 연결되어 있습니다.
mbomb007


3

옥타브 , 73 바이트

@(x)sum('09977433333222211'(([~,y]=ismember(x,'QZJXKFHVWYBCMPDG'))+1)-47)

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

ismember입력 스트림의 각 문자를 x조회 문자열의 색인에 맵핑하는 데 사용 합니다 'QZJXKFHVWYBCMPDG'. 찾을 수없는 요소는 인덱스 0에 매핑됩니다 (1 포인트 문자 포함).

다음으로 인덱스에 1을 추가하여 0을 유효한 1 인덱스 참조로 만들고 string을 찾습니다 '09977433333222211'. 첫 번째 조회 문자열보다 긴 요소입니다. 숫자는 원래 문자열에서 각 요소의 포인트 값에서 1을 뺀 값을 나타내며 추가 요소는에서 '0' beginning입니다.

마지막으로 결과 문자열은 47( '0'-1) 을 빼서 정수로 변환하여 각 문자의 포인트 값을 산출 한 다음 모든 포인트 값을 합산합니다.


1
매우 영리한! :)
Stewie Griffin

3

C ++, 95 바이트

char*m="02210313074020029000033739";
int f(char*p){int n=0;while(*p)n+=m[*p++-65]-47;return n;}

온라인으로 사용해보십시오 (TIO 링크가 아님)

설명:

  • m, 각 문자의 값을 뺀 순서로, 1을 선언합니다 . 빼기 1은 Q와 Z 때문입니다. 두 자리 숫자를 가질 수 없습니다.
  • pnull 문자가 될 때까지 문자열을 반복 하고 숫자의 점수를 추가합니다 ( *p문자를 제공 -65하므로 배열을 올바르게 색인화 할 수 있습니다). 이후 mA는 char*그것이로 변환 char우리 그래서 마이너스 480으로 다시 가져 그래서하지만 추가 1이후 m한 적은 각 문자에 대한 점수로 선언된다.

나는 열렬한 포스터가 아니므로 이것을 올바르게했으면 좋겠다. 나는 그들이 n값을 인쇄하는 것으로 계산하고 함수를 선언하는 것이 좋다고 생각 합니다.


아주 좋아요! 저장할 수있는 유일한 바이트는 줄 바꿈입니다. 온라인으로 사용해보십시오!
movatica



2

apt , 36 바이트

£2+`dg
bcmp
fhvwy
k


jx

qzbøX
x

입력을 소문자 문자열로 받아서 숫자를 반환합니다.
간단한 설명 :

£2+`dg
¬       // Split the input into chars,
 £      // then map over each char, returning
  2+`dg // 2 plus

qzbøX
    bøX // the char's index in
qz    // the hardcoded string split by newlines.
x       // And finally sum the whole thing.

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




2

Gforth , 109 바이트

: V s" 1332142418513113:11114484:" ; : C 0 NAME 0 DO DUP C@ 65 - V DROP + C@ 48 - ROT + SWAP 1+ LOOP DROP . ;

입력은 대문자 여야합니다.
C PPCG 11 OK

읽을 수있는

\ String used as table with values for each letter in the alphabet
\ : follows 9 in the ASCII-table
: V
   s" 1332142418513113:11114484:"
;

: C
   0                   \ Initialize sum        ( sum               )
   NAME                \ Get the string        ( sum  c-addr count )
   0 DO                \ Start of loop         ( sum  c-addr       )
      DUP C@           \ Get letter            ( sum  c-addr char  )
      65 -             \ Calculate table index ( sum  c-addr index )
      V DROP + C@      \ Get table entry       ( sum  c-addr entry )
      48 -             \ Calculate entry value ( sum  c-addr value )
      ROT + SWAP       \ Update sum            ( sum' c-addr       )
      1+               \ Next character        ( sum' c-addr'      )
   LOOP
   DROP .              \ Drop c-addr and print result
;

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


2

펄 6 , 52 바이트

{TR/A..Z/02210313074020029000033739/.comb.sum+.ords}

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

모든 문자를 숫자로 매핑하고 합산합니다. 유니 코드 바이트를 발생시키지 않고 숫자 10이 없기 때문에 각 문자에 1을 추가합니다.


2

레티 나 0.8.2 , 41 바이트

T`BCDGJKMPQXZF\HVWY`221174229793
.
$*..
.

온라인으로 사용해보십시오! 링크에는 테스트 사례가 포함됩니다. 설명 : Haskell의 답변과 같이 사소한 문자는 점수보다 1로 작게 변환되고 나중에 문자가 단항으로 변환 될 때 1이 추가됩니다. FHVWY마지막에 두면 모두 3 + 1의 점수로 매핑 할 수 있습니다.


2

C (gcc), 78 72 바이트

i;f(char*s){for(i=0;*s;)i+="\n\n"[*s++-65];s=i;}

해당 문자열에는 실제로 26자가 있습니다. 올바르게 렌더링 된 코드를보고 여기에서 실행 하십시오 .

6 바이트 골프를위한 gastropner 덕분 입니다.

언 골프 버전 :

i; // declare a variable to store the score; it is implicitly of type int
f(char* s) { // function taking a string as argument and implicitly returning an int
    for(i = 0; // initialize the score to 0
        *s; ) // iterate over the string until we hit terminating NUL byte
        i += "\n\n"[*s++ - 65]; // this is a 26-char string containing the ASCII equivalent of each numeric scrabble value; 65 is ASCII code for 'A', mapping the alphabet onto the string
    s = i; // implicitly return the score
}

2

엑셀, 91 바이트

{=LEN(A1)+SUM(0+("0"&MID("02210313074020029000033739",CODE(MID(A1,ROW(A:A),1)&"z")-64,1)))}

설명:

  • 입력이 셀에 있습니다 A1
  • 수식은 Ctrl+ Shift+ 와 함께 배열 수식으로 입력해야하며 Enter, { }양쪽 끝에 중괄호가 추가 됩니다.
  • MID(A1,ROW(A:A),1) 각 문자를 차례로 가져옵니다 (시트에 행이있는만큼 많은 값을 반환하기 때문에 많은 빈 값도 있습니다)
  • CODE(MID(~)&"z")각 문자의 ASCII 값을 가져옵니다. 는 &"z"를 추가 z의 끝에 MID()있기 때문에 그 결과 CODE()빈 입력 좋아하지 않는다. 의 ASCII 값 z은 모든 대문자보다 높으므로 나중에 효과적으로 무시됩니다.
  • MID("02210313074020029000033739",CODE(~)-64,1) 64로 조정 된 ASCII 값을 기준으로 점수 문자열에서 문자를 가져 오므로 문자는 65-90 대신 1-26으로 실행됩니다.
  • "0"&MID(~)MID()Excel에서 빈 문자열로 수학을 수행 할 수 없으므로 결과에 0을 추가합니다 . 여기에는 여러 문자열이 있습니다.
  • 0+("0"&MID(~)) 모든 문자열을 숫자로 바꿉니다.
  • SUM(0+("0"&MID(~))) 이제 숫자 인 모든 문자열을 더합니다.
  • LEN(A1)+SUM(~)점수 문자열 ( 02210313074020029000033739) 의 모든 값 이 1 자리로 조정되어 모두 한 자리 길이 이므로 입력 길이를 합계에 추가합니다 .

Google 스프레드 시트에는 매우 유사한 솔루션이 있지만 ArrayFromula()보다 길기 때문에 97 바이트로 제공됩니다 {}(그러나 적어도 처리 할 수 ​​있습니다 0 + "" = 0).

=Len(A1)+ArrayFormula(Sum(0+Mid("02210313074020029000033739",Code(Mid(A1,Row(A:A),1)&"z")-64,1)))

1
잘 했어. 26을 사용하는 Excel 솔루션이 있으며 SUBSTITUTE()527 바이트가 많습니다.
Wernisch

2

Wolfram Language (Mathematica) , 74 바이트

물론 Wolfram | Alpha는 글자 맞추기 점수를 지원합니다! 이것은 익명의 기능입니다.

Plus@@(First[WolframAlpha["Scrabble "<>##,"NumberData"]]&/@Characters[#])&

TIO에서는 작동하지 않습니다.

실행하려면 여기 로 이동하여 아래로 스크롤하여 "새 노트북 만들기»"를 클릭하십시오. 노트북에서 사용할 코드는 이 TIO 프로그램에 있으므로 복사 할 수 있습니다. 각 함수 호출을 자체 코드 블록에 붙여 넣습니다. 단일 블록에서 너무 많이 실행하면 실행이 완료되지 않습니다.

WolframAlpha인터넷을 사용하여 요청 을 보냅니다. PPCG에 사용하는 다른 답변이 있지만 알고 있어야한다고 생각했습니다.

이 프로그램은 아래의 짧은 기능을 사용하지만 입력의 각 개별 문자 에서 호출합니다 ( 매번 Wolfram | Alpha에 개별 호출을 보냅니다 !)


이것은 글자 맞추기 보드의 너비 인 길이 15까지만 입력 할 수 있습니다. (49 바이트)

First[WolframAlpha["Scrabble "<>#,"NumberData"]]&

위와 동일하지만 입력이 유효한 글자 맞추기 단어인지 여부와 함께 상자에 결과가 표시됩니다. (45 바이트)

First[WolframAlpha["Scrabble "<>#,"Result"]]&


2

K (oK) , 60 38 바이트

해결책:

+/1+.:'"02210313074020029000033739"65!

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

설명:

점수로 색인하고 결과를 요약합니다.

+/1+.:'"02210313074020029000033739"65! / the solution
                                   65! / input modulo 65 to get position in A-Z
       "02210313074020029000033739"    / index into the scores (1 point lower)
    .:'                                / value (.:) each (') to convert to ints
  1+                                   / increase by 1
+/                                     / sum up

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.