Вызов:
Возьмите строку прописных или строчных букв в качестве входных данных (необязательно) и вычислите количество очков, которое эта строка получила бы в игре « Скрэббл» на английском языке.
Правила:
Счет каждой буквы следующий (используйте это, даже если есть другие версии игры):
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
Самый короткий ответ на каждом языке выигрывает! Форматы ввода и вывода являются гибкими, поэтому вы можете использовать ввод как массив символов (верхний или нижний регистр), если хотите.
Ответы:
сед 4.2.2 , 81
Вывод в одинарный .
Сокращает каждую букву до комбинации букв с меньшим количеством баллов, пока все буквы не станут 1-балльными. Затем заменяет те на
1
s, чтобы дать одинарный счет.Попробуйте онлайн!
источник
Haskell ,
8684 байтаПопробуйте онлайн!
объяснение
Большинство букв дают 1 балл, и поэтому нам не нужно отслеживать их, вместо этого мы просто уменьшаем каждый счет (также сохраняет 1 байт
10
), а затем добавляем длину строки к полученному результату.Спасибо @nimi за -2 байта (переназначение слов и использование
[1..]
вместо[4,3..]
)!источник
zip[1..]$words"DG BCMP FHVWY K . . JX . QZ"
дает другую альтернативу с равной длинойОктава , 50 байт
Попробуйте онлайн!
Вызов принят. Объяснение:
источник
-47
но это для вас игра в код!==
это в Октаве. Не работает в MATLAB. Хорошо знать.bsxfun
) также короче - 61 байт: попробуйте онлайн!Битник , 733 байта
Так как это действительно должно было быть сделано, вот оно. Это было действительно неприятно для отладки и предоставило несколько проблем.
Ввод должен состоять только из прописных букв. Вывод одинарный (надеюсь, что все в порядке?)
Попробуйте онлайн!
Общий процесс:
Заканчивается с ошибкой.
Более полное объяснение:
источник
Brain-Flak ,
210, 204, 198, 184, 170 байтПопробуйте онлайн!
Спасибо @JoKing за сохранение 14 байтов!
Читаемая версия:
источник
Pyth, 40 байт
Попробуй здесь
объяснение
источник
Python 2 , 78 байт
Попробуйте онлайн!
Укороченная версия, порт ответа DanielIndie ,
7170 байт-1 байт благодаря Санни Патель
Попробуйте онлайн!
источник
JavaScript (Node.js) ,
71666362 байтаПопробуйте онлайн!
источник
Java 8,
757170 байт-1 байт, изменив
"02210313074020029000033739".charAt(c-65)-47
непечатаемые (и два\n
), чтобы-47
можно было удалить. Вдохновленный ответом @Sanchises Octave .Попробуйте онлайн.
источник
Октава / MATLAB, 85 байт
Попробуйте онлайн!
источник
Желе , 19 байт
Монадическая ссылка, принимающая список символов в верхнем регистре, который возвращает целое число
Попробуйте онлайн! Или посмотрите набор тестов .
Как?
источник
R ,
9063 байтаПопробуйте онлайн!
Принимает ввод в виде заглавной строки. R обрабатывает непечатные и многострочные строки без проблем, так что это хорошо. Теперь мы почти вдвое больше внешнего пакета!
И потому что у CRAN так много случайных вкусностей:
R + ScrabbleScore 31 байт
Попробуйте онлайн!
К сожалению,
sws
проверка на действительность по умолчанию.источник
utf8ToInt
вместоmatch
и удалось получить несколько более вниз!Эмоджикод , 358 байт
Попробуйте онлайн!
Объяснение:
Я изменил имена переменных с отдельных букв на более значимые слова и расширил некоторые части моего кода, чтобы, надеюсь, сделать его более читаемым для людей, незнакомых с языком. Вы можете проверить расширенную программу здесь .
источник
05AB1E , 21 байт
Принимает ввод как строчный список символов.
Попробуйте онлайн! или как тестовый набор
источник
Октава , 73 байта
Попробуйте онлайн!
Используется
ismember
для сопоставления каждого символа входного потока сx
его индексом в строке поиска'QZJXKFHVWYBCMPDG'
. Любой элемент, который не найден, будет сопоставлен с индексом 0 (это будет включать 1-точечные символы).Затем мы добавляем 1 к индексу, чтобы 0 стали действительными ссылками на 1 индекс, и ищем строку
'09977433333222211'
. Это на один элемент длиннее первой строки поиска. Цифры представляют значение точки каждого элемента в исходной строке, минус 1, с дополнительным элементом, равным '0' вbeginning
.Наконец, результирующая строка преобразуется в целые числа с помощью функции вычитания
47
('0'-1
), получая значение точки для каждой буквы, и все значения точек затем суммируются.источник
C ++, 95 байт
Попробуйте онлайн (не ссылка TIO извините)
Объяснение:
m
, массив значений каждой буквы в порядке, минус 1. Минус 1 из-за Q и Z: я не мог иметь двухзначное число тамp
до тех пор, пока мы не получим нулевой символ, и не добавляет счет числа (*p
дает нам букву, и-65
мы можем правильно индексировать массив). Такm
как a, тоchar*
он преобразуется в a,char
поэтому мы минус,48
поэтому возвращаем его к 0, но добавляем,1
посколькуm
объявляется как на один балл меньше для каждого символа.Я не заядлый плакат здесь, поэтому я надеюсь, что я сделал это правильно. Я полагаю, что они возвращают
n
счет как печать значения, и что объявление функции - это хорошо.источник
Haskell , 66 байт
Попробуйте онлайн! Тот же подход, что и в ответе DanielIndie на JavaScript .
Haskell ,
8281 байтПопробуйте онлайн!
источник
PowerShell , 60 байт
Попробуйте онлайн!
источник
Japt , 36 байт
Принимает ввод в виде строчной буквы, возвращает число.
Краткое объяснение:
Попробуйте онлайн!
источник
Рубин , 60 байт
Попробуйте онлайн!
Лямбда, принимающая ввод в виде массива символов (в верхнем регистре) и возвращающая целое число.
источник
Perl 5
-pF
, 50 байтПопробуйте онлайн!
источник
Gforth , 109 байт
Ввод должен быть в верхнем регистре:
C PPCG 11 OK
Удобочитаемый
Попробуйте онлайн!
источник
Perl 6 , 52 байта
Попробуйте онлайн!
Сопоставляет каждый символ с цифрой и суммирует их. И добавляет 1 для каждого символа, потому что нет цифры 10 без использования байтов Юникода.
источник
Сетчатка 0.8.2 , 41 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение: Как и в ответе на Haskell, нетривиальные буквы переводятся на 1 меньше, чем их оценка, а 1 добавляется позже, когда символы конвертируются в унарные. Установка
FHVWY
последнего позволяет им всем отображаться на счет 3 + 1.источник
C (gcc),
7872 байтаНа самом деле в этой строке 26 символов. Посмотрите код, отображаемый правильно, и запустите его здесь .
Спасибо гастропнеру за игру в гольф 6 байтов.
Безголовая версия:
источник
Excel, 91 байт
Объяснение:
A1
{ }
к обоим концам.MID(A1,ROW(A:A),1)
вытягивает каждый символ по очереди (и много пустых значений, так как он будет возвращать столько значений, сколько строк на листе)CODE(MID(~)&"z")
вытаскивает значение ASCII для каждого символа.&"z"
Присоединяетz
к концуMID()
результата , потому чтоCODE()
что не любит пустые входы. Однако значение ASCIIz
выше, чем каждая заглавная буква, поэтому оно фактически игнорируется позже.MID("02210313074020029000033739",CODE(~)-64,1)
извлекает букву из строки результатов, основываясь на ее значении ASCII, уменьшенном на 64, поэтому буквы запускаются 1-26 вместо 65-90."0"&MID(~)
добавляет ноль кMID()
результату потому что Excel не позволит вам выполнять математику с пустыми строками, которых будет несколько.0+("0"&MID(~))
превращает все эти строки в числа.SUM(0+("0"&MID(~)))
складывает все те строки, которые теперь являются числами.LEN(A1)+SUM(~)
добавляет длину ввода к сумме, потому что все значения в строке оценки (02210313074020029000033739
) были уменьшены на единицу, поэтому все они будут иметь длину в одну цифру.В Google Sheets очень похожее решение, но оно занимает 97 байт, потому что
ArrayFromula()
оно длиннее{}
(но, по крайней мере, оно может справиться0 + "" = 0
).источник
SUBSTITUTE()
, с огромными 527 байтами.Wolfram Language (Mathematica) , 74 байта
Конечно, Wolfram | Alpha поддерживает Scrabble! Это анонимная функция.
Это не работает на TIO.
Для запуска перейдите сюда , прокрутите вниз и нажмите «Создать новую записную книжку». Код для использования в блокноте находится в этой программе TIO, поэтому вы можете скопировать его. Вставьте каждый вызов функции в отдельный блок кода. Если вы запустите слишком много в одном блоке, выполнение не будет завершено.
Обратите внимание, что
WolframAlpha
отправляет запрос через Интернет. Хотя есть и другие ответы на PPCG, которые используют его, я подумал, что вы должны знать.Эта программа использует приведенную ниже укороченную функцию, но вызывает ее для каждого отдельного символа ввода ( каждый раз отправляя отдельный вызов Wolfram | Alpha !)
Это работает только для ввода до длины 15, ширины доски Эрудит. (49 байт)
То же, что и выше, но результат будет отображаться в окне вместе с тем, является ли ввод допустимым словом Scrabble. (45 байт)
источник
C # (.NET Core) , 50 + 18 = 68 байт
+18 байт для
using System.Linq;
Попробуйте онлайн!
источник
K (ок) ,
6038 байтРешение:
Попробуйте онлайн!
Объяснение:
Индекс в баллах, подведение итогов.
источник
Japt
-x
,43393530 байтПопробуйте онлайн!
35-байтовое решение:
Запустите его онлайн
источник