Wprowadzenie
W krainie [Wstaw fajne imię tutaj] ludzie nie kupują rzeczy za pieniądze, ponieważ każdy ma poważną alergię na papier. Płacą sobie nawzajem słowami! Ale jak to jest? Podają wartości liczbowe każdej litery:
a=1,b=2,c=3,etc.
(Z innymi specjalnymi zasadami, które zostaną opisane później)
W tym wyzwaniu Twoim zadaniem będzie obliczenie wartości zdań.
Wyzwanie
Weźmiesz wejście, które będzie zdanie. Możesz założyć, że na wejściu nie ma znaku nowej linii ani spacji końcowych. Wyzwaniem będzie obliczyć wartość zdania, stosując następujące reguły:
a=1,b=2,c=3,etc.
- Wielka litera jest warta 1,5 razy tyle, co odpowiadająca jej mała litera
H=h*1.5
Więc słowo
cab
Byłoby warte c+a+b = 3+1+2 = 6
Ale słowo Cab
z wielką literą c byłoby warte (c*1.5)+a+b = 4.5+1+2 = 7.5
Więc jeśli twój program wejściowy to „Cab”, twój program wyświetli 7,5
- Wszystkie znaki alfabetyczne są warte 1.
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach. Powodzenia!
7.0
zamiast7
?Odpowiedzi:
Python 3,
716561 bajtówPrzez niezwykły zbieg okoliczności
(ord(s)-64)*1.5
jest równyord(s)*1.5-96
, więc musimy napisać-96
tylko raz. Reszta jest całkiem prosta.Edycja: Ogolono niektóre bajty za pomocą shenanigans potęgowania.
źródło
Python 2,
120102 bajtówEdytować:
Pierwsze zgłoszenie, niezbyt golfowe, ale trzeba gdzieś zacząć.
źródło
for
w opisach .e
parametrem, który zwraca wynik.Pyth,
2320 bajtówPrezentacje na żywo i przypadki testowe.
Wyjaśnienie
Sporo kreatywnych zastosowań wartości logicznych jako liczb całkowitych.
Wersja 23-bajtowa:
Prezentacje na żywo i przypadki testowe.
źródło
.
(wszystkie znaki niealfabetyczne powinny być warte 1)Julia, 63 bajty
To po prostu sumuje tablicę zbudowaną za pomocą zrozumienia, które zapętla znaki w ciągu wejściowym i wykonuje arytmetykę na ich punktach kodowych.
Nie golfowany:
Dzięki Glen O za naprawę podejścia.
źródło
Utknął ,
8543 bajtówTak, tak, wiem, Python jest krótszy ..: PUżywam teraz tej samej logiki co Tryth.Wyjaśnienie:
źródło
Python 2, 101 bajtów
źródło
CJam, 30 bajtów
Jak to działa (wow, nigdy nie stworzyłem żadnego z nich!):
źródło
F #, 168 bajtów
Jeszcze nie grałem w golfa, ale początek:
Oto bardziej czytelna wersja:
źródło
K, 30
.
Jak to działa:
.Q`a`A
generuje dwie listy małych i wielkich liter!:1+til 26
mapuje każdą literę na każdej liście od 1 do 26Pomnóż pierwszą listę przez 1, ostatnią przez 1,5
Raze w jednym słowniku za pomocą
,/
Odwzoruj znaki w ciągu wejściowym na odpowiednie wyniki
Wypełnij wszystkie wartości null wartością 1
Suma
źródło
JavaScript, 121 bajtów
wywołaj plik js z węzłem (node index.js „Cab”)
źródło
MATLAB, 68 bajtów
Wykorzystuje to fakt, że znaki są automatycznie rzutowane na liczby całkowite, a wartości boolowskie można sumować jako liczby całkowite.
źródło
Perl 5, 77 bajtów
Testowane na
v5.20.2
.źródło
JavaScript (ES6),
85828067 bajtówUwielbiam takie szybkie i łatwe wyzwania. :)
Działa to poprzez interpretację każdego znaku jako liczby podstawowej 36, pomnożenie go przez 1 lub 1,5, jeśli jest większy niż 9 (
a-z
lubA-Z
), i podanie 1 zamiast tego, jeśli nie. Jak zawsze sugestie mile widziane!źródło
toString(36)
.toString(36)
tutaj stosuje. Masz na myśli coś takiegoparseInt(c,36)
? To może być krótsze ...([c,...t])=>c?(parseInt(c,36)-9||2/3)*(c>'Z'||1.5)+f(t):0
Python 3:
8685 bajtówźródło
C # 81 bajtów
Zadzwoń za pomocą (LinqPad):
źródło
PHP, 102 bajty
Przykład użycia:
Nic specjalnego w algorytmie. Każdy znak z argumentu pierwszego programu (
$argv[1]
) jest sprawdzany względem,A
aZ
następniea
iz
odpowiednio liczony.źródło
PowerShell, 108 bajtów
Jestem przyzwoicie konkurencyjny, jestem trochę zaskoczony. Niezbyt obskurny, bo nie ma kompaktowego operatora trójskładnikowego.
Kod:
Wyjaśniono:
źródło
C, 85 bajtów
!!
Przedislower
iisupper
są konieczne, ponieważ wartości logiczne zwracane przez te funkcje nie są gwarancją0
i1
prawdziwa wartość była1024
w moim systemie rzeczywiście!źródło
Cukierki ,
2622 bajtów(~ "a" <{A # 64-2 / 3 * | A # 96-} h) ZDzięki @Tryth za sztuczkę faktoryzacji!
Wywołanie ma flagę -I, jak w
candy -I "Cab" -e $prg
Kod w swojej długiej formie to:
źródło
Prolog (SWI), 101 bajtów
Kod:
Wyjaśniono:
Przykład:
źródło
PHP, 75 bajtów
Uruchom jako potok z
-nr
lub spróbuj online .źródło