Бернардіно ототожнює незмінені доларові слова


47

Визначення

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

Вхідні дані

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

Вихід

Виведіть значення truthy, якщо вхід є доларовим словом, і значення falsey, якщо це не так.

Випробування

Truthy:

buzzy
boycott
identifies
adiabatically
ttttt

Фальсі:

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}

Спробуй це

Чергуйте:

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

Спробуй це

Зауважте, що це ROMAN NUMERAL ONE HUNDREDU + 216D з унівалом… 100,
що кодує 3 байти.

Розширено:

{  # 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також. Але чому? Який операнд є !в С при його використанні !integer?
Кевін Кройсейсен

@KevinCruijssen !- це просто логічно not. В C 0означає false, та будь-яке інше ціле значення значення true. Отже !0 == 1, і !n == 0для кожного n != 0.
Steadybox

@Steadybox О, я не знав цієї частини: " і будь-яке інше ціле значення означає істину ", але це дійсно має сенс. Я завжди (неправильно) вважав це 0=false; 1=trueзамість цього, звідси і моя плутанина. Дякую за відповідь.
Kevin Cruijssen

6

Haskell , 32 байти

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

Це працює для введення малих літер. Для верхнього регістру, s/96/64/. Підтримка змішаного регістру додала б купу байтів.


6

Математика, 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, а не третє введення командного рядка (1- й програмний вхід).

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

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


1
Як альтернативи O%32S=ȷ2. Працює для великих та малих літер.
Денніс

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

Гм, гадаю, це можна було б зробити. Наприклад, не відрізняється від використання глобальної змінної в C.
Денніс

6

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

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

Спробуйте в Інтернеті!

Вхід має бути малим. Принти 1для доларових слів та 0іншим способом.

Пояснення

Час показати стрічку Аліси та деякий просунутий потік управління. Незважаючи на те, що вона досить добре працює з цілими числами та рядками окремо, Аліса не має вбудованих модулів: а) визначати довжину рядка; b) конвертувати між символами та їх кодовими точками. Причиною цього є те, що всі команди Аліси або відображають цілі числа до цілих чисел, або рядки до рядків. Але обом потрібно буде відображення рядків на цілі числа чи навпаки, тому вони не вписуються в жоден з режимів Аліси.

Однак, крім своєї стеки, Аліса також має стрічку, а режим Кардинала та Ординала інтерпретує дані на стрічці різними способами

  • У режимі Кардинал це звичайна стрічка, знайома з інших мов, таких як Brainfuck. Ви можете зберігати одне ціле число у кожній комірці, а можна переміщати стрічку навколо. Стрічка нескінченно довга і спочатку вміщує -1 у кожній комірці. Осередки також індексуються, і головка стрічки починається з індексу 0 .
  • У звичайному режимі є своя стрічка (також починаючи з індексу 0 ), і вона трактує стрічку як список струн. Рядки завершуються не символьними клітинками (тобто будь-якими значеннями, які не є дійсною кодовою точкою Unicode), зокрема -1 . Так для звичайного режиму стрічка спочатку заповнюється порожніми струнами.

Ця стрічка може бути використана для обох вищезазначених операцій: щоб отримати довжину рядка, ми записуємо її на стрічку в ординарному режимі, шукаємо закінчення -1 у режимі Кардинала та повертаємо положення голови стрічки. Для перетворення символів у їхні кодові точки ми просто зчитуємо їх із стрічки у режимі Кардинала.

Інші дві важливі особливості, які використовуються в цьому рішенні, - це зворотний стек і ітератор. Аліса має зворотний стек, який, як правило, заповнюється при використанні команди стрибок 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 і для мене.
Рівень р. Св.

Ви маєте рацію, я подумав, що це те саме, що і масив №2, який є новим у 2,4
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замість цього?
Ніл

@Neil Hum ... Я завжди використовував -96+для таких речей .. Дякую за це! (але тепер я відчуваю, що мені варто повернутися через свої старі повідомлення та замінити всі -96+: x)
Дада,

Питання вказує, що масиви дозволяються вводити. Таким чином, це може бути короткішим як підпрограма: {$@+=31&ord for@_;$@==100}(неперевірено)
msh210

Я думаю, це залежить від контексту - тут ви використовуєте його в +=, але в інших випадках ви можете витратити заощадження на дужки.
Ніл

@ msh210 Проблема говорить your one language's text datatypes. Масиви навряд чи є текстовим типом даних Perl ... (Інакше це б врятувало 1 байт)
Dada

5

PowerShell , 36 30 байт

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

Спробуйте в Інтернеті!

Вводиться як масив, але мені цікаво, чи є кращий спосіб обробляти символи.

EDIT Пропущений простий простір, але @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

Діялог APL, 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

Пітон , 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

Сітківка , 47 23 байт

\w
!$&
}T`l`_l
^!{100}$

Спробуйте в Інтернеті! Примітка: заголовок нижнього регістру вводить і розбиває його на слова; результати відображаються в окремих рядках. Редагувати: Збережено занадто багато байтів завдяки @MartinEnder.


Набагато коротше обчислити буквені
Мартін Ендер,

4

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

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

Віднімайте 96з вхідного рядка x(малі регістри), щоб отримати числові значення букв. Бере sumі порівнює його 100. Повертає логічне 1для правдивих випадків та логічне 0для помилкових випадків.

Я міг би зберегти один байт, якби це було нормально, щоб вводити помилки для "доларових слів" та істинно для "недоларових слів".


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

Ruby (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.
Значення чорнила

І використовувати 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.