Twoim zadaniem, jeśli zdecydujesz się to zaakceptować, jest zdecydowanie, czy dany ciąg wejściowy jest ciężki do kropek, czy ciężki do kreski.
Ciąg jest ciężki od kropek, gdy jego reprezentacja Morse'a zawiera więcej kropek niż myślników. Na przykład litera E jest pojedynczą kropką, co oznacza, że jest gruba na kropkę.
Wejście
- Łańcuch wejściowy będzie zawierał tylko znaki z zakresu
[a-z]
lub[A-Z]
. Możesz zdecydować, czy wszystkie powinny być wielkie, czy wszystkie małe.AAA
jest w porządku,aaa
jest w porządku,aAa
nie jest. - Ciąg wejściowy zawsze będzie miał co najmniej 1 znak.
- Możesz założyć, że ciągi wejściowe nigdy nie będą miały takiej samej liczby kropek i myślników.
Wynik
Powinieneś zwrócić Truthy dla danych wejściowych, które zawierają więcej znaków kropek.
Powinieneś zwrócić Falsy dla danych, które zawierają więcej znaków myślnika.
Edycja: Pozwolę również na wartość dodatnią dla kropki i ujemną dla kreski.
Przypadki testowe
| input | morse representation | result |
|------------------------------------------------|
| S | ... | Truthy |
| k | -.- | Falsy |
| HELLO | .... . .-.. .-.. --- | Truthy |
| code | -.-. --- -.. . | Falsy |
Odniesienie
To jest golf golfowy . Najkrótszy kod w bajtach wygrywa.
Odpowiedzi:
APL (Dyalog Extended) ,
2415 bajtów SBCS-9 dzięki Ven
Anonimowa funkcja ukrytego przedrostka, przyjmująca za argument wielkie litery.
Wypróbuj online!
⌂morse
konwertować do listy ciągów Morse∘
następnie∊
ε nlist (spłaszczyć)'.-'⍧
policzyć liczbę kropek i kresek w tym, że>/
więcej punktów niż kresek? (litera większa niż redukcja)źródło
IBM PC DOS, zestaw 8088,
5435 bajtów-19 bajtów przy użyciu metody różnicowej
Niezmontowane:
Wyjaśnienie
Zaimplementowano w składni Intel / MASM jako MAKRO (w zasadzie funkcja), używając tylko instrukcji zgodnych z 8088. Wprowadź ciąg wielkich liter (lub +2 bajty, aby zezwolić na pisanie wielkimi literami), wyślij wynik Truthy / Falsy
SF == OF
(użyjJG
lubJL
przetestuj).Wartości w tabeli różnic między literami są przechowywane jako binarne skrypty, więc w sumie zajmuje tylko 13 bajtów.
Oryginalny (54 bajty):
Wyjaśnienie
Zaimplementowane w składni Intel / MASM jako MAKRO (w zasadzie funkcja), przy użyciu instrukcji zgodnych tylko z 8088. Wprowadź jako ciąg, a wynik Truthy / Falsy spowoduje przeniesienie flagi. Tabela wyników zawiera liczbę myślników i kropek na literę.
Dane wejściowe są pisane wielkimi literami. Dodaj 2 bajty, aby zapisać małe lub mieszane małe litery.
Przykładowy program testowy (jako samodzielny plik COM komputera IBM PC DOS)
Przykładowe dane wyjściowe:
Pobierz program testowy DD.COM
Lub wypróbuj online! Nie znam internetowego TIO do bezpośredniego linku do pliku wykonywalnego DOS, jednak możesz tego użyć w kilku krokach:
DD Hello
lubDD code
do treści twojego sercaźródło
0000h
dla źródła AX: fysnet.net/yourhelp.htmXLAT
robienia dokładnie tego, co powinien. Jeśli faktycznie optymalizowałeś szybkość w porównaniu z rozmiarem, chciałbyś wykonać wyszukiwania wielkości WORD. Nadal jest to szybka wygrana nawet w 8088 z jej anemiczną 8-bitową zewnętrzną magistralą, ponieważ podwajasz przepustowość bez zwiększania rozmiaru kodu, z wyjątkiemXCHG
instrukcji lub dwóch.XLAT
), Nawet jeśli potrzeba 6 bajtów, aby wykonać przesunięcie bitowe w prawo o 4 miejsca (wewnątrz aLOOP
).Java (JDK) ,
1311241108464 bajtyCo ciekawe, „kropka” jest ciężka, a „kreska” jest ciężka.
Pobiera dane we wszystkich wielkich literach jako
IntStream
(przewiń w dół, aby uzyskać wersję z wartością rzeczywistą,String
aby uzyskać dodatkowe 8 bajtów). Miałem sporo pomocy w golfa: dzięki Expired Data za grę w golfa 20 bajtów, Neilowi w golfa za 26 bajtów, Olivierowi Grégoire'owi za grę w golfa 18 bajtów i Kevinowi Cruijssenowi za grę w golfa 2 bajty.Zawiera 26 niedrukowalnych znaków w podwójnych cudzysłowach.
Wypróbuj online!
Nie golfowany:
Java (JDK) ,
1311241108472 bajtyDla purystów; przyjmuje dane wejściowe jako
String
. Dzięki Expired Data za grę w golfa 20 bajtów, Neilowi w golfa 26 bajtów i Olivierowi Grégoire'owi w golfa 10 bajtów.Wypróbuj online.
Nie golfowany:
źródło
"35344527512513031462452313".charAt(a-65)-51
?Galaretka , 21 bajtów
Wypróbuj online!
W jaki sposób?
źródło
05AB1E ,
2221 bajtówOszczędność bajtu dzięki Kevinowi Cruijssenowi
Wypróbuj online!
Wyjaśnienie
jest 35344527512513031462452313 skompresowany do podstawy 255.
źródło
S
.usdgpsahsoaboutlopezgbidol
v = ord(c)*3%83%8
aboutlopez
. Potem szukałem innych dopasowań z tym samym mnożnikiem i modulo. (Więc absolutnie nie ma gwarancji, że będzie optymalna.)C # (interaktywny kompilator Visual C #) , 47 bajtów
Używa Level River St's „magicznego sznurka”Pamiętaj również, aby głosować za ich rozwiązaniem!
To nie jest codzienność C # bije Ruby, Python, JavaScript, C, Retina i Perl!
Wypróbuj online!
źródło
Galaretka , 23 bajty
Wypróbuj online!
źródło
C (gcc) ,
8482817975 bajtówZakłada wszystkie czapki.
Wypróbuj online!
źródło
Python 2 ,
737069 bajtówWypróbuj online!
Tylko wielkie litery
-3 bajty, dzięki Erikowi Outgolfer
Zarówno wersja wielka, jak i mała:
Python 2 ,
7371 bajtówWypróbuj online!
źródło
JavaScript (Node.js) ,
6968 bajtówOczekuje, że ciąg wejściowy będzie pisany wielkimi literami. Zwroty0 lub 1 .
Wypróbuj online!
źródło
Stax , 20 bajtów
Uruchom i debuguj
Rozpakowane, niepolowane i skomentowane, wygląda to tak.
Uruchom ten
źródło
Rubinowy , 64 bajty
Wypróbuj online!
Wykorzystuje 13-bajtowy ciąg magiczny, po 2 cyfry
0..7
zakodowane w każdym bajcie. Odejmij 3 dla zakresu-3..4
.Kod ASCII dla
A
(a takżeN
) wziętego modulo 13 jest przez przypadek równy zero.źródło
Retina 0.8.2 , 51 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Akceptuje tylko duże litery (+6 bajtów dla mieszanych). Bezwstydnie kradnie ciąg @ Arnaulda, ale i tak zamierzałem użyć tego samego algorytmu. Wyjaśnienie:
Zmień każdą literę na różnicę w liczbie kropek i myślników plus trzy, więc
O=0
iH=7
.Reprezentują różnicę jako liczbę
<
s i trzy>
s. (Niestety nie mogę używać kropek, ponieważ są one wyjątkowe w wyrażeniach regularnych).Usuń dopasowane pary
<
s i>
s.Sprawdź, czy pozostały jeszcze jakieś kropki.
źródło
Bash + coreutils,
6460 bajtówWypróbuj online!
Bierze ciąg znaków małymi literami, zwraca zero dla fałszu, niezerowe dla prawdy
Wyjaśnienie
Używa tr i sed, aby utworzyć program dc, który wygląda (na przykład wpisz „hello”):
źródło
<space>3
goz
(wygodnie, mam w tym momencie 3 elementy na stosie!) I kolejny bajt, zastępując cudzysłowy wokół mojego programu sed słowem pojedynczy ukośnik, aby uciec&
R ,
7470 bajtówwejście powinno być pisane małymi literami, zwraca TRUE lub FALSE
Wypróbuj online
źródło
TI-BASIC (TI-84), 111 bajtów
Użyłem tego samego ciągu do określenia ciężkości kropek, jak niektóre inne odpowiedzi.
Program zwraca truey (
1
), jeśli ciąg wejściowy jest ciężki od kropek, a falsy (0
), jeśli nie.Łańcuch wejściowy musi być wielkimi literami.
Dane wejściowe są przechowywane w
Ans
. Dane wyjściowe są zapisywaneAns
i automatycznie drukowane po zakończeniu programu.Nie golfowany:
Przykład:
Objaśnienie:
(TI-BASIC nie ma komentarzy, załóżmy, że
;
oznacza to komentarz)Uwaga: Liczba bajtów programu jest obliczana przy użyciu wartości w [MEM] > [2] > [7] (124 bajty), a następnie odejmując długość nazwy programu,
CDGF3
, (5 bajtów) i dodatkowe 8 bajtów używanych dla przechowywanie programu:124 - 5 - 8 = 111 bajtów
źródło
Perl 5
-pF
, 53 bajtówWypróbuj online!
źródło
Współczynnik , 66 bajtów
Wypróbuj online!
źródło
C ++ (skompilowany z Visual Studio 2017) 171 bajtów
jeśli weźmiemy pod uwagę główny program, który istnieje do celów testowych, jego więcej.
jest to wariant „schludny” bez golfisty
zakłada wszystkie małe litery
źródło
22
powinno być2
.)"132...
i"112...
stają się"353...
i51
są wartością ASCII3
c (118 znaków) zwraca wartość dodatnią dla nadmiernej kropki i wartość ujemną dla nadmiernej kreski
bez golfa
źródło
1& ( v > (c[I] - 65))
, które jest takie samo, jakv > c[I] - 65
nie mogę sobie wyobrazić, że jest zawsze fałszywe, więc moglibyśmy to wszystko usunąć podczas riffowania na @ceilingcat przez 56 bajtówMathGolf , 22 bajty
Wypróbuj online!
Używa tej samej metody, co wiele innych odpowiedzi, gdzie
ⁿ∩┐↑rⁿ¼~<↔"
reprezentuje magiczną liczbę35344527512513031462452313
.źródło
Python 2,
9086 bajtówpracowałem nad moją lokalną biblioteką Morse'a . -4 bajty. Dzięki za wskazówkę @JoKing!
Ponadto jest to 1 bajt więcej, jeśli jest w Pythonie 3.
Python 3, 87 bajtów
Chociaż pytanie zakłada, że liczba „.” I „-” nie będzie równa; jeśli są one równe, ten kod zwróci True.
źródło
input
zamiast,raw_input
jeśli chcesz ...input
ewaluuje STDIN przed przekazaniem go do programu