Бернардино идентифицирует неизмененные долларовые слова


47

Определение

Слово доллара - это слово, где, когда каждой из его букв присваивается значение цента от a = 1 до z = 26, и буквы суммируются, результат равен 100. Вот пример CodeReview, а здесь список долларовых слов я нашел в сети.

вход

Ввод будет в алфавитном порядке от az, в текстовых типах данных вашего языка (допустимы массивы). Вам не нужно учитывать любые другие входные данные - не будет пробелов, апострофов или дефисов. Вы можете использовать как строчные, прописные или комбинации. Конечные переводы строки разрешены.

Выход

Выведите истинное значение, если ввод является долларовым словом, и ложное значение, если это не так.

Тестовые случаи

Truthy:

buzzy
boycott
identifies
adiabatically
ttttt

Falsey:

zzz
zzzzzzz
abcdefghiljjjzz
tttt
basic

Это код-гольф, поэтому выигрывает самый короткий ответ в байтах! Стандартные лазейки и правила применяются. Галстук идет к первому постеру.


20
В названии есть долларовые слова, извините, если вас это отбросило.
Стивен

Ответы:


7

GS2 , 6 байт

▲1Θd←q

Ввод должен быть в верхнем регистре.

Попробуйте онлайн!

Как это устроено

  Θ       Combine the previous two tokens into a block and map it over the input.
▲             Push 64.
 1            Subtract 64 from the character on the stack.
   d      Take the sum of the resulting character array.
    ←     Push 100.
     q    Compare the two items on the stack for equality.


12

05AB1E , 8 байтов

Код:

Ç96-O4bQ

Использует кодировку CP-1252 . Попробуйте онлайн!

Объяснение:

Ç          # Convert the string into a list of character codes
 96-       # Subtract 96 of each element
    O      # Take the sum
     4b    # Push 100 (4 in binary)
       Q   # Check if equal

2
Tnтоже работает: P
Волшебная Осьминог Урна

Ç4+OTn%0Qбыла другая идея, которая у меня была, но она хуже.
Волшебная Урна Осьминога

11

Perl 6 , 21 байт

{100==[+] .ords X%32}

Попробуй

Alternate:

{Ⅽ==[+] .ords X%32}

Попробуй

Обратите внимание, что это ROMAN NUMERAL ONE HUNDREDU + 216D с унивалом… 100,
что для кодирования занимает 3 байта.

Expanded:

{  # bare block lambda with implicit parameter $_

  100     # is 100
  ==      # equal to
  [+]     # the sum of the following

    .ords # the ordinals of the input (implicit method call on $_)
    X[%]  # crossed using the modulus operator
    32    # with 32 to get 65..90 or 97..122 to become 1..26
}

11

MATL , 8 байт

96-s100=

Использует ввод строчных букв.

Попробуйте онлайн!

объяснение

Код читается настолько, насколько это возможно:

96-   % Implicitly input string. Subtract 96 from each char interpreted as ASCII code
s     % Sum of array
100=  % Does it equal 100? Implicitly display

7

JavaScript (ES6), 46 байт

Возвращает 0или 1.

let f =

w=>[...w].map(c=>p-=parseInt(c,36)-9,p=100)|!p

console.log(f('buzzy'))
console.log(f('qwerty'))


Интересно, что когда я попробовал reduceрекурсию, они оба вышли на 2 байта длиннее.
Нил

@Neil На самом деле, он использовался reduce()в течение первых нескольких минут льготного периода, когда я первоначально разместил его.
Арно

7

Haskell , 32 байта

f s=sum[1|c<-s,_<-['a'..c]]==100

Попробуйте онлайн!

Идея состоит в том, чтобы составить список символов aдля данного символа для каждого символа в списке и проверить, что общая длина равна 100.

Другие попытки:

f s=sum[1|c<-s,_<-['a'..c]]==100

f s=sum[fromEnum c-96|c<-s]==100
f s=100==length((\c->['a'..c])=<<s)
(==100).length.(>>= \c->['a'..c])
(==100).length.(=<<)(\c->['a'..c])
(==100).length.(enumFromTo 'a'=<<)
f s=100==length(do c<-s;['a'..c])

Жаль, enumFromToэто так долго.


1
Вы правы, что длина - позор (100==).length.(enumFromTo 'a' =<<)- такое чистое использование
Джулиан Вольф

7

C 45 43 байта

Спасибо @Neil за сохранение двух байтов и решение без учета регистра!

n;f(char*s){for(n=100;*s;)n-=*s++&31;n=!n;}

Попробуйте онлайн!


Похоже, вы можете сохранить байт, установив n=0глобально, а затем пропустив первое предложение спецификации цикла, нет? изменить: не берите в голову - я думаю, это будет работать только для самого первого звонка.
Джулиан Вольф

3
Можно ли отсчитывать от 100 байтов сохранения? Кроме того, &31может помочь сделать ваш код нечувствительным к регистру.
Нил

Из любопытства, как n=!nработает? Я понимаю, что он проверяет, nравен ли он нулю, потому что на основании некоторого теста я вижу !0возвраты 1; !15возвращается 0; и !-15возвращается 0. Но почему? Какой операнд !в C при использовании его как !integer?
Кевин Круйссен

@KevinCruijssen !просто логично not. В С 0означает false, а любое другое целочисленное значение означает true. Так !0 == 1и !n == 0для каждого n != 0.
Steadybox

@Steadybox Ах, я не знал этой части: « и любое другое целочисленное значение означает true », но это действительно имеет смысл. Я всегда (неправильно) думал об этом, как об этом 0=false; 1=true, отсюда мое замешательство. Спасибо за ответ.
Кевин Круйссен

6

Haskell , 32 байта

f w=sum[fromEnum c-96|c<-w]==100

Это работает для ввода строчных букв. В верхнем регистре s/96/64/. Поддержка смешанного регистра добавит кучу байтов.


6

Mathematica, 23 байта

100==Tr@LetterNumber@#&

Чистая функция, принимающая строку (или массив букв) в качестве входных данных, без учета регистра и возвращающая Trueили False. Здесь Trпросто складываются буквенные числа вместе; все остальное самоочевидно.


6

Желе , 9 7? * 8 байт

ɠO%32S⁼³

Полная программа, выдающая 1, если ввод является долларовым словом, или 0, если нет.

Попробуйте онлайн!

Как?

ɠO%32S⁼³ - Main link
ɠ        - read a line of input from STDIN
 O       - cast to ordinals
  %32    - mod 32 (vectorises) (-3*32=96 from lowercase; -2*32=64 from uppercase)
     S   - sum
       ³ - literal: 100
      ⁼  - equal?

* Может ли это быть 7 байтов?

Единственная причина, по которой это потребовало ввода, ɠзаключалась в том, чтобы сохранить ³в качестве литерала 100, а не 3- й ввод командной строки (1- й ввод программы).

Способ избежать этого состоит в том, чтобы, как указал Деннис, создать 100 с использованием необработанной литеральной формы, равной ȷ210 2 . Это приводит к еще одному 8-байтовому O%32S=ȷ2, но теперь это неназванная монадическая функция (а также работа как полноценная программа с 3- м аргументом).

Поскольку в гольфе можно создавать переменные или вспомогательные функции, которые ограничивают программу, в которой они могут находиться (нельзя повторно использовать имя в области видимости, не останавливая функцию для повторного использования), возможно, ограничение программы только на ввод данных из STDIN может также допустимо, и в этом случае 7-байтовый код O%32S=³будет приемлемым здесь как безымянная функция.


1
В качестве альтернативы O%32S=ȷ2. Работает для ввода прописных и строчных букв.
Деннис

@Dennis Это может быть граница, но на O%32S⁼³самом деле она не будет действительной записью, поскольку она определяет неназванную, повторно используемую функцию, если остальная часть программы, в которой она находится, не использует аргументы командной строки для ввода?
Джонатан Аллан

Хм, думаю, это можно сделать. Не сильно отличается от использования глобальной переменной в C, например.
Деннис

6

Алиса , 23 байта

/o!
\i@/e)q&w[?'`-+k3-n

Попробуйте онлайн!

Ввод должен быть в нижнем регистре. Печать 1на долларовые слова и 0прочее.

объяснение

Время показать ленту Алисы и продвинутый поток управления. Несмотря на то, что Алиса довольно хорошо умеет работать с целыми числами и строками по отдельности, у нее нет встроенных функций для: а) определения длины строки, б) преобразования между символами и их кодовыми точками. Причина этого заключается в том, что все команды Алисы отображают целые числа в целые числа или строки в строки. Но оба из них потребуют сопоставления строк с целыми числами или наоборот, поэтому они не вписываются ни в один из режимов Алисы.

Однако, помимо стека, у Алисы также есть лента, а режимы Cardinal и Ordinal по-разному интерпретируют данные на ленте.

  • В режиме Cardinal это обычная лента, знакомая по другим языкам, таким как Brainfuck. Вы можете хранить одно целое число в каждой ячейке и перемещать головку ленты. Лента бесконечно длинна и изначально содержит -1 в каждой ячейке. Ячейки также индексируются, а головка ленты начинается с индекса 0 .
  • Порядковый режим имеет собственную головку ленты (также начинающуюся с индекса 0 ) и интерпретирует ленту как список строк. Строки завершаются не символьными ячейками (т. Е. Любыми значениями, которые не являются допустимой кодовой точкой Юникода), в частности -1 . Поэтому для обычного режима лента изначально заполнена пустыми строками.

Эта лента может использоваться для обеих вышеуказанных операций: чтобы получить длину строки, мы записываем ее на ленту в обычном режиме, ищем завершающий -1 в кардинальном режиме и получаем положение головки ленты. Чтобы преобразовать символы в их кодовые точки, мы просто читаем их с ленты в режиме Cardinal.

Две другие важные функции, используемые в этом решении - это стек возвратов и итератор. У Алисы есть стек возвратов, который обычно заполняется при использовании команды прыжка j, и с которого вы можете получить адрес для перехода назад k. Тем не менее, также возможно поместить текущий адрес в стек возврата, не переходя никуда с помощью w. Если мы соединим wс повтора команды &, мы можем нажать на текущий адрес в стеке возвратов п раз. Теперь каждый раз, когда мы достигаем k, одна копия извлекается из стека возврата, и мы выполняем другую итерацию w(начиная с ячейки после нее, потому что IP перемещается до выполнения другой команды). Когда возвращаемый стек становится пустым,kвообще ничего не делает и IP просто проходит. Следовательно, &w...kпоявляется целое число n, а затем выполняется ... n + 1 раз, что дает нам очень краткий способ выразить простой forцикл.

На сам код ...

/     Reflect to SE. Switch to Ordinal.
i     Read the input word as a string.
      Bounce off bottom boundary, move NE.
!     Store the input word on the tape.
      Bounce off top boundary, move SE.
/     Reflect to E. Switch to Cardinal.
e     Push -1.
)     Seek right on the tape for a -1, which finds the -1 terminating
      the input word.
q     Push the tape head's position, which gives us the string length N.
&w    Repeat this loop n+1 times (see above for an explanation)...
  [     Move the tape head left by one cell.
  ?     Retrieve the code point of the character in that cell.
  '`    Push 96.
  -     Subtract it from the code point to convert the letters to 1...26.
  +     Add the result to a running total. This total is initialised to 
        zero, because in Cardinal mode, the stack is implicitly filled with
        an infinite amount of zeros at the bottom.
k    End of loop.
     Note that the above loop ran once more than we have characters in the
     string. This is actually really convenient, because it means that we've
     added a "-1 character" to the running total. After subtracting 96 to
     convert it to its "letter value" this gives 97. So dollar words will
     actually result in 100 - 97 = 3, which we can check against for one
     byte less than for equality with 100.
3-   Subtract 3 to give 0 for dollar words.
n    Logical NOT. Turns 0 (dollar words) into 1 and everything else into 0.
     The IP wraps around to the beginning of the first line.
\    Reflect to NE. Switch to Ordinal.
o    Implicitly convert the result to a string and print it.
     Bounce off top boundary, move SE.
@    Terminate the program.

Приятно! Я получил 41 с первой попытки
Kritixi Lithos,

6

R, 55 54 байта

function(x)sum(match(el(strsplit(x,"")),letters))==100

-1 байт благодаря BLT

  • возвращает функцию, которая выполняет необходимые вычисления, которая возвращает TRUEи, FALSEкак и следовало ожидать.

  • принимает ввод в нижнем регистре; будет только переключение с lettersна LETTERSдля всех прописных


1
function(x)sum(match(el(strsplit(x,"")),letters))==100сохраняет байт.
BLT

6

Рубин, 25 байт

->s{s.sum-s.size*64==100}

Работает в верхнем регистре.

Я вижу несколько более сложных записей Ruby, но на самом деле все так просто. s.sumдобавляет ASCII-коды входной строки, и из этого мы вычитаем 64-кратную длину строки.

Пример использования

f=->s{s.sum-s.size*64==100}

puts f["ADIABATICALLY"]
puts f["ZZZ"]

Это работает только на Ruby 2.4 и в настоящее время не работает на TIO
GB

1
@GB спасибо за комментарий, но я работаю на 2.2.6, и он прекрасно работает для меня. Функция была задокументирована с 1.9.3. Это работает на TIO.run и Ideone.com для меня тоже.
Уровень Река St

Вы правы, я думал, что это то же самое, что Array # sum, который
GB

На самом деле, это не сумма значений ASCII, определение «Возвращает базовую n-битную контрольную сумму символов в str». Это работает в этом случае, конечно.
ГБ


5

05AB1E , 9 байтов

5bIvAyk>-

Попробуйте онлайн!

объяснение

Поскольку 1 - единственное истинное значение в 05AB1E, мы можем сохранить байт, используя вычитание по сравнению со 100 .

5b         # convert 5 to binary (results in 101)
  Iv       # for each letter in input word
    Ayk    # get the index of the letter in the alphabet
       >   # increment
        -  # subtract from total

5

Perl 5 , 30 байт

-1 байт благодаря @Neil ( 31&вместо -96+).

29 байт кода + -pфлаг.

$@+=31&ord for/./g;$_=$@==100

Попробуйте онлайн!


Вы можете использовать 31&ordвместо этого?
Нил

@ Нил Хам ... Я всегда использовал -96+для таких вещей .. Большое спасибо за это! (но теперь я чувствую, что должен вернуться к своим старым сообщениям и заменить каждый -96+: x)
Dada

Вопрос указывает, что массивы разрешены в качестве входных данных. Таким образом, это может быть более коротким как подпрограмма: {$@+=31&ord for@_;$@==100}(не проверено)
msh210

Я предполагаю, что это зависит от контекста - здесь вы используете его в a +=, но в других случаях вы можете тратить экономию на скобках.
Нил

@ msh210 Задача говорит your one language's text datatypes. Массивы вряд ли являются текстовым типом данных Perl ... (В противном случае это действительно спасло бы 1 байт)
Dada

5

PowerShell , 36 30 байт

$args|%{$s+=$_[0]-96};$s-eq100

Попробуйте онлайн!

Входные данные в виде массива, но мне интересно, есть ли лучший способ обработки символов.

РЕДАКТИРОВАТЬ Пропустил легкий пробел, но @AdmBorkBork, пожалуйста, дайте мне знать: P также, на самом деле, был лучший способ обработки символов!


Привет - пара быстрых гольфов. Вам не нужны парены вокруг [char]$_-96, и вам не нужно пространство между -eqи 100, приводя вас к 33. Вы также можете сделать "$_"[0]вместо того [char]$_, чтобы снизить до 32. Попробуйте онлайн!
AdmBorkBork

Являются "вокруг $_необходимости? Кажется, работает без актерского состава. Может ли это быть из-за того, что вход уже является строковым массивом?
Синусоида

Ах, действительно, вы правы. "Не нужно в данном конкретном случае.
AdmBorkBork

5

Алиса , 28 18 байт

Спасибо @MartinEnder за 10 байтов в гольфе

=I.!'`-+?hn
>3-nO@

Попробуйте онлайн!

В этом представлении используется метод, отличный от ответа @ MartinEnder.

Эта подача выводов 0x00для ложных и 0x01правдивых.

Так вот версия, которая выводит 0или 1вместо этого: Попробуйте!

объяснение

Объяснение ниже для «видимой» версии. Оба очень похожи, за исключением первой программы, последняя oне преобразует 0или 1в строку (потому что мы в кардинальном режиме), но вместо этого берет число и выводит символ в этой кодовой точке.

=                 Does nothing, but will be useful later on
I                 Read a character and push its code point onto the stack
                  If there is no more input, -1 is pushed instead
.                 Duplicate it
!                 Store it on the tape
#                 Skip the next command
o                 Gets skipped
'`                Push 96
-                 Subtract it from the character
+                 And add it to the total
?                 Load the number on the tape
h                 Increment it
n                 And negate it
                  For all characters that are read, ?hn results in 0,
                  but if -1 is pushed, then the result becomes 1

После этого IP переходит к левому краю на =. Если верхнее значение стека равно 0, IP продолжает свой путь, увеличивая общую сумму всех символов, как только это будет сделано с помощью ввода (вершина стека будет 1), тогда IP поворачивает направо (90 градусов по часовой стрелке).

Важно отметить одну вещь: цикл в первой строке будет повторяться один раз после окончания ввода. Это вычтет 97( 96из '`и -1из-за отсутствия ввода) из общей суммы.

>                Set the direction of the IP to East
3-               Subtract 3 from it (yields 0 if sum is 100, something else otherwise)
n                Negate it; Zero becomes 1, non-zero numbers become 0
/                Mirror; the IP gets redirected South-East
                 The IP reflects off the bottom and goes North-East
                 Now the program is in Ordinal mode, where numbers are automatically converted into strings when being used
o                Output the top of the stack as a string
                 IP reflects off the top and heads South-East
@                End the program

5

Такси , 1259 байт

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to Auctioneer School.Go to Auctioneer School:s 1 r 1 l 1 l.Pickup a passenger going to Chop Suey.0 is waiting at Starchild Numerology.Go to Starchild Numerology:s 1 l.Pickup a passenger going to Addition Alley.Go to Chop Suey:e 1 l 2 r 3 r 3 r.[a]Switch to plan "b" if no one is waiting.Pickup a passenger going to Charboil Grill.Go to Charboil Grill:n 1 l 3 l 3 l.Pickup a passenger going to What's The Difference.Go to Go More:e.64 is waiting at Starchild Numerology.Go to Starchild Numerology:e 2 r.Pickup a passenger going to What's The Difference.Go to What's The Difference:e 1 l 2 r 1 l.Pickup a passenger going to Addition Alley.Go to Addition Alley:e 2 r.Pickup a passenger going to Addition Alley.Go to Chop Suey:n 1 r 2 r.Switch to plan "a".[b]Go to Addition Alley:n 1 l 2 l.Pickup a passenger going to Equal's Corner.100 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 3 l 2 r.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan "c" if no one is waiting."TRUE" is waiting at Writer's Depot.[c]"FALSE" is waiting at Writer's Depot.Go to Writer's Depot:n 1 l 1 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.

С переносами строк это выглядит так:

Go to Post Office:w 1 l 1 r 1 l.
Pickup a passenger going to Auctioneer School.
Go to Auctioneer School:s 1 r 1 l 1 l.
Pickup a passenger going to Chop Suey.
0 is waiting at Starchild Numerology.
Go to Starchild Numerology:s 1 l.
Pickup a passenger going to Addition Alley.
Go to Chop Suey:e 1 l 2 r 3 r 3 r.
[a]
Switch to plan "b" if no one is waiting.
Pickup a passenger going to Charboil Grill.
Go to Charboil Grill:n 1 l 3 l 3 l.
Pickup a passenger going to What's The Difference.
Go to Go More:e.
64 is waiting at Starchild Numerology.
Go to Starchild Numerology:e 2 r.
Pickup a passenger going to What's The Difference.
Go to What's The Difference:e 1 l 2 r 1 l.
Pickup a passenger going to Addition Alley.
Go to Addition Alley:e 2 r.
Pickup a passenger going to Addition Alley.
Go to Chop Suey:n 1 r 2 r.
Switch to plan "a".
[b]
Go to Addition Alley:n 1 l 2 l.
Pickup a passenger going to Equal's Corner.
100 is waiting at Starchild Numerology.
Go to Starchild Numerology:n 1 l 1 l 3 l 2 r.
Pickup a passenger going to Equal's Corner.
Go to Equal's Corner:w 1 l.
Switch to plan "c" if no one is waiting.
TRUE is waiting at Writer's Depot.
[c]
FALSE is waiting at Writer's Depot.
Go to Writer's Depot:n 1 l 1 r.
Pickup a passenger going to Post Office.
Go to Post Office:n 1 r 2 r 1 l.

Он принимает верхний или нижний регистр, потому что Auctioneer Schoolпреобразует все это в верхний регистр.
Chop Sueyразбивает его на отдельных персонажей.
Charboil Grillпреобразует символы в их ASCII-код
Мы подбираем один символ за раз, конвертируем его в ASCII, вычитаем 65 и добавляем его к промежуточной сумме.
Как только больше нет символов, сравните общее количество до 100.

Возвращает TRUEза долларовые слова и FALSEза все остальное.


1
В мире «скучных» нечитаемых языков кода-гольфа <20 байтов ответов, я приветствую вашу запись, добрый незнакомец.
Оливье Дюлак

5

Машинный код IA-32, 21 байт

HexDump:

33 c0 6a 64 5a 8a 01 41 24 1f 75 05 83 ea 01 d6
c3 2b d0 eb f0

Код сборки:

    xor eax, eax;   initialize eax to 0
    push 100;       initialize edx
    pop edx;            to 100
myloop:
    mov al, [ecx];  load a byte
    inc ecx;        go to next byte
    and al, 31;     convert from letter to number
    jnz cont;       not done? continue

    ;               done:
    sub edx, 1;     check whether edx got to 0; result is in CF
    __emit(0xd6);   aka SALC - set al to CF
    ret
cont:
    sub edx, eax
    jmp myloop

Считает от 100 до 0. Если прибыл в 0, возвращает true (0xff); в противном случае ложь (0x00).


5

Дьялог АПЛ, 17 15 байт

100=+/17-⍨⎕AV⍳⍞

Использует набор символов Dyalog Classic.

              ⍞  ⍝ string input
          ⎕AV⍳   ⍝ index in the character map
      17-⍨       ⍝ subtract 17 from each ('a' = 18)
    +/           ⍝ sum
100=             ⍝ equal to 100?

По умолчанию все представления должны быть полными программами или функциями. Программы REPL разрешены, если они определены как таковые. Тем не менее, вы все равно должны запросить ввод данных пользователем.
Деннис

4

Python , 38 байт

lambda s:sum(map(ord,s))==4-96*~len(s)

Попробуйте онлайн!

Та же длина, что и у овса . Вместо того, чтобы вычитать 96 из каждого ordзначения, это проверяет, ordравна ли сумма 100+96*len(s). Это выражается на один байт короче 4-96*~len(s), что равно 4-96*(-len(s)-1).


В Python 3 lambda s:sum(s.encode(),96*~len(s))==4также будет работать.
Деннис



4

Октава, 18 байт

@(x)sum(x-96)==100

Вычитает 96из входной строки x(нижний регистр), чтобы получить числовые значения букв. Берет sumи сравнивает это с 100. Возвращает логическое 1для истинных случаев и логическое 0для ложных случаев.

Я мог бы сохранить один байт, если бы было нормально давать false для «долларовых слов» и true для «недолларовых слов».


4

Japt , 13 12 10 байт

L¥U¬x_c %H

Объяснение:

L¥ U¬x _c %H
L¥(U¬x(_c %H))
L¥(          )   // 100==
   U¬            //   Input split into a char array
     x(     )    //   The sum of:
       _         //     At each char:
        c        //       Get the char-code and
          %H     //       Mod 32

Проверьте это онлайн!

12-байт:

L¥U¬mc m%H x

Попробуйте онлайн!

Еще одно 12-байтовое решение с использованием другой техники

L¥U¬x@;CaX Ä

Попробуйте онлайн!


Отличная работа! Я думаю, что вы можете сохранить байт на первом с помощью m%Hвместо m-96(это будет работать в обоих случаях сейчас, бонус!), И одного на втором сL¥U¬x@;CaX Ä
ETHproductions

@ETHproductions Спасибо! m%Hбыла хорошая находка. x@тоже была отличная идея!
Оливер

@ETHproductions Получил 10 байт;)
Оливер

3

Рубин (2.4+), 38 байт

Принимает ввод в нижнем регистре. Требуется Ruby 2.4, Array#sumчтобы он не работал на TIO.

->a{a.chars.map{|c|c.ord-96}.sum==100}

2
Используйте String#bytesвместо того, String#charsчтобы вам не пришлось звонить c.ord.
Value Ink

И использовать sumна массиве вместоmap
GB

3

/// , 564 210 189 185 байт

/~/1\/\///4/11~3/41//6/33//2/66//5/22~a/~b/1~c/4~d/3~e/31~f/34~g/6~h/16~i/46~j/36~k/316~l/346~m/2~n/12~o/42~p/32~q/312~r/342~s/62~t/162~u/462~v/362~w/3162~x/3462~y/22~z/122~5555/0///1/0

Попробуйте онлайн!

Печатает 1, если это «долларовое слово», в противном случае печатает «0»

Ввод следующий: (Прокрутите полностью вправо)

/~/1\/\///4/11~3/41//6/33//2/66//5/22~a/~b/1~c/4~d/3~e/31~f/34~g/6~h/16~i/46~j/36~k/316~l/346~m/2~n/12~o/42~p/32~q/312~r/342~s/62~t/162~u/462~v/362~w/3162~x/3462~y/22~z/122~5555/0//INPUT WORD HERE/1/0

Работает, заменяя каждую букву ее значением в унарном, затем заменяя унарную 100 на 0. Затем она заменяет любое значение слова на 1. Если значение слова равно 0, то оно будет печатать 1, потому что в конце код, он заменяет 0. Если значение слова является чем-то еще, он просто напечатает это 0.

Гольф работает, используя обычные вхождения в коде в качестве замены.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.