Misi Anda, jika Anda memilih untuk menerimanya, adalah memutuskan apakah string input yang diberikan adalah Dot-heavy, atau Dash-heavy.
Sebuah string adalah titik-berat ketika representasi morse-nya mengandung lebih banyak titik daripada tanda hubung. Misalnya, huruf E adalah satu titik, yang artinya Dot-berat.
Memasukkan
- String input hanya akan berisi karakter dalam kisaran
[a-z]
atau[A-Z]
. Anda dapat memutuskan apakah mereka semua menjadi huruf besar, atau semua huruf kecil.AAA
baik,aaa
baik,aAa
tidak. - String input akan selalu memiliki setidaknya 1 karakter.
- Anda dapat mengasumsikan bahwa string input tidak akan pernah memiliki jumlah titik dan garis yang sama.
Keluaran
Anda harus mengembalikan Kebenaran untuk input yang berisi lebih banyak karakter titik.
Anda harus mengembalikan Falsy untuk input yang berisi lebih banyak karakter tanda hubung.
Sunting: Saya akan mengizinkan nilai positif untuk titik dan nilai negatif untuk tanda hubung juga.
Uji kasus
| input | morse representation | result |
|------------------------------------------------|
| S | ... | Truthy |
| k | -.- | Falsy |
| HELLO | .... . .-.. .-.. --- | Truthy |
| code | -.-. --- -.. . | Falsy |
Referensi
Ini adalah kode-golf . Kode terpendek dalam byte menang.
Jawaban:
APL (Dyalog Extended) ,
2415 byte SBCSTerima kasih kepada Ven
Fungsi awalan diam-diam anonim mengambil huruf besar sebagai argumen.
Cobalah online!
⌂morse
konversikan ke daftar string Morse∘
lalu∊
ϵ mendaftar (meratakan)'.-'⍧
menghitung jumlah titik dan garis dalam yang>/
lebih banyak titik daripada garis? (lit. lebih besar dari reduksi)sumber
IBM PC DOS, 8088 assembly,
5435 byte-19 byte menggunakan metode perbedaan
Belum dirakit:
Penjelasan
Diimplementasikan dalam sintaks Intel / MASM sebagai MACRO (pada dasarnya fungsi), hanya menggunakan 8088 instruksi yang kompatibel. Input sebagai string huruf besar (atau +2 byte untuk membolehkan case campuran), hasilnya adalah Truthy / Falsy
SF == OF
(menggunakanJG
atauJL
untuk menguji).Nilai tabel perbedaan huruf disimpan sebagai nibble biner, sehingga hanya membutuhkan total 13 byte.
Asli (54 byte):
Penjelasan
Diimplementasikan dalam sintaks Intel / MASM sebagai MACRO (pada dasarnya fungsi), hanya menggunakan 8088 instruksi yang kompatibel. Input sebagai string, hasil Truthy / Falsy menghasilkan Carry Flag. Tabel Skor berisi jumlah tanda hubung dan titik per huruf.
Masukan huruf besar. Tambahkan 2 byte untuk mengambil huruf kecil atau kecil.
Contoh Tes Program (sebagai IBM PC DOS mandiri yang dapat dieksekusi COM)
Contoh Output:
Unduh program uji DD.COM
Atau Cobalah Online! Saya tidak mengetahui adanya TIO online untuk mengarahkan tautan ke executable DOS, namun Anda dapat menggunakan ini hanya dengan beberapa langkah:
DD Hello
atauDD code
sesuka hati Andasumber
0000h
untuk sumber AX: fysnet.net/yourhelp.htmXLAT
untuk melakukan apa yang seharusnya dilakukan. Jika Anda benar-benar mengoptimalkan kecepatan di atas ukuran, Anda ingin melakukan pencarian seukuran WORD. Ini masih merupakan kemenangan kecepatan bahkan pada 8088 dengan bus eksternal 8-bit yang anemia, karena Anda menggandakan throughput tanpa meningkatkan ukuran kode, kecuali untuk satuXCHG
atau dua instruksi.XLAT
), meskipun dibutuhkan 6 byte untuk melakukan bitwise menggeser ke kanan 4 tempat (di dalam aLOOP
).Java (JDK) ,
1311241108464 byteMenariknya, "titik" adalah garis putus-putus dan "garis putus" adalah titik-berat.
Mengambil input dalam semua huruf besar sebagai
IntStream
(gulir ke bawah untuk versi dengan aktualString
untuk 8 byte tambahan). Saya sudah banyak membantu bermain golf yang satu ini: Terima kasih untuk Data yang kadaluwarsa untuk bermain golf 20 byte, untuk Neil untuk bermain golf 26 byte, untuk Olivier Grégoire untuk bermain golf 18 byte dan kepada Kevin Cruijssen untuk bermain golf 2 byte.Berisi 26 karakter yang tidak patut dicetak di dalam tanda kutip ganda.
Cobalah online!
Tidak Terkumpul:
Java (JDK) ,
1311241108472 byteUntuk puritan; menerima input sebagai a
String
. Terima kasih kepada Expired Data untuk bermain golf 20 byte, untuk Neil untuk bermain golf 26 byte dan untuk Olivier Grégoire untuk bermain golf 10 byte.Cobalah online.
Tidak Terkumpul:
sumber
"35344527512513031462452313".charAt(a-65)-51
?Jelly , 21 byte
Cobalah online!
Bagaimana?
sumber
05AB1E ,
2221 byteMenyimpan satu byte berkat Kevin Cruijssen
Cobalah online!
Penjelasan
adalah 35344527512513031462452313 dikompresi ke basis 255.
sumber
S
.usdgpsahsoaboutlopezgbidol
v = ord(c)*3%83%8
aboutlopez
. Saya kemudian mencari pertandingan lain dengan pengali dan modulo yang sama. (Jadi sama sekali tidak dijamin optimal.)C # (Visual C # Interactive Compiler) , 47 byte
Penggunaan 'string sihir' Level River St. Pastikan untuk memperbaiki solusi mereka juga!
Bukan sehari-hari C # mengalahkan Ruby, Python, Javascript, C, Retina, dan Perl!
Cobalah online!
sumber
Jelly , 23 byte
Cobalah online!
sumber
C (gcc) ,
8482817975 byteMengasumsikan semua topi.
Cobalah online!
sumber
Python 2 ,
737069 byteCobalah online!
Hanya huruf besar
-3 byte, terima kasih kepada Erik the Outgolfer
Versi huruf besar dan kecil:
Python 2 ,
7371 byteCobalah online!
sumber
JavaScript (Node.js) ,
6968 byteCobalah online!
sumber
Stax , 20 byte
Jalankan dan debug itu
Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
Ruby , 64 byte
Cobalah online!
Menggunakan string ajaib 13 byte, 2 angka
0..7
dikodekan dalam setiap byte. Kurangi 3 untuk rentang-3..4
.Kode ASCII untuk
A
(dan jugaN
) yang diambil modulo 13 adalah secara kebetulan, nol.sumber
Retina 0.8.2 , 51 byte
Cobalah online! Tautan termasuk kasus uji. Hanya menerima huruf besar (+6 byte untuk huruf campuran). Tanpa malu-malu mencuri string @ Arnauld tapi saya tetap akan menggunakan algoritma yang sama. Penjelasan:
Ubah setiap huruf menjadi perbedaan dalam jumlah titik dan garis, ditambah tiga, jadi
O=0
danH=7
.Mewakili perbedaan karena angka
<
s dan tiga>
s. (Sayangnya saya tidak bisa menggunakan titik karena mereka spesial di regex.)Hapus pasangan
<
s dan>
s yang cocok.Periksa apakah masih ada titik yang tersisa.
sumber
Bash + coreutils,
6460 byteCobalah online!
Mengambil string dalam huruf kecil, menghasilkan nol untuk falsy, bukan nol untuk truey
Penjelasan
Gunakan tr dan sed untuk membuat program dc yang mirip (misalnya, masukan 'halo'):
sumber
<space>3
denganz
(nyaman, saya memiliki 3 item pada stack pada saat itu!) Dan byte lain dengan mengganti tanda kutip di program sed saya dengan satu backslash untuk melarikan diri&
R ,
7470 byteinput harus huruf kecil, mengembalikan BENAR atau SALAH
Cobalah online
sumber
TI-BASIC (TI-84), 111 byte
Saya menggunakan string yang sama untuk menentukan titik-berat seperti beberapa jawaban lainnya.
Program mengembalikan truey (
1
) jika string input dot-berat, falsy (0
) jika tidak.Input string harus dalam huruf kapital semua.
Input disimpan di
Ans
. Output disimpan diAns
dan dicetak secara otomatis ketika program selesai.Tidak Terkumpul:
Contoh:
Penjelasan:
(TI-BASIC tidak memiliki komentar, anggap itu
;
menunjukkan komitmen)Catatan: Hitungan byte suatu program dievaluasi menggunakan nilai dalam [MEM] > [2] > [7] (124 byte) lalu kurangi panjang nama program
CDGF3
,, (5 byte) dan tambahan 8 byte yang digunakan untuk menyimpan program:124 - 5 - 8 = 111 byte
sumber
Perl 5
-pF
, 53 byteCobalah online!
sumber
Faktor , 66 byte
Cobalah online!
sumber
C ++ (dikompilasi dengan Visual Studio 2017) 171bytes
jika kita mempertimbangkan program utama yang ada untuk tujuan pengujian juga lebih banyak.
ini adalah varian "rapi" yang ungolfed
mengasumsikan semua huruf kecil
sumber
22
seharusnya2
.)"132...
dan"112...
menjadi"353...
dan51
merupakan nilai ASCII dari3
c (118 karakter) mengembalikan nilai positif untuk over-dot-ness dan nilai negatif untuk over-dash-ness
tidak golf
sumber
1& ( v > (c[I] - 65))
, yang sama denganv > c[I] - 65
, yang tidak dapat saya bayangkan pernah salah, sehingga kita dapat menghapus semuanya sambil meng-riffing @ceilingcat selama 56 byteMathGolf , 22 byte
Cobalah online!
Menggunakan metode yang sama dengan banyak jawaban lain, yang
ⁿ∩┐↑rⁿ¼~<↔"
merepresentasikan angka ajaib35344527512513031462452313
.sumber
Python 2,
9086 bytebekerja di lokal saya dengan perpustakaan morse . -4 byte. Terima kasih atas tipnya.
Juga, ini 1 byte lebih banyak jika dalam Python 3.
Python 3, 87 byte
Meskipun pertanyaannya mengasumsikan jumlah '.'s dan' -'s tidak akan sama; dalam kasus mereka sama, kode ini akan mengembalikan True.
sumber
input
alih-alihraw_input
jika Anda mau ...input
eval STDIN sebelum meneruskannya ke program