Ini mirip dengan Membuat akronim , tetapi ada beberapa perbedaan utama, termasuk metode pengambilan akronim, dan tantangan ini termasuk output yang fleksibel.
Tugas
Diberikan string (daftar karakter / panjang 1 string diizinkan) yang hanya berisi ASCII yang dapat dicetak, mengeluarkan semua huruf kapital dalam input yang diawali dengan spasi atau tanda hubung, atau merupakan karakter pertama dalam input. String kosong adalah perilaku yang tidak terdefinisi.
Kasus uji:
Output mungkin dalam format "TEST"
, ["T","E","S","T"]
, atau apa pun yang lain bekerja untuk Anda.
Self-contained Underwater Breathing Apparatus
SUBA
a Programming Language
PL
NATO Atlantic TREATY Organization
NATO
DEFCON 2
D
hello, world!
light-Emitting dioDe
E
What Does the Fox Say?
WDFS
3D mov-Ies
I
laugh-Out Lou-D
OLD
Best friends FOREVE-r
BF
--
<space>
-- --a - - --
-- -- - - -- A
A
Step-Hen@Gmail-Mail Mail.CoM m
SHMM
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
[email protected]
.Jawaban:
V , 7 byte
Cobalah online!
Berikut ini adalah hexdump untuk membuktikan jumlah byte:
Penjelasan:
Ini singkat semua berkat kompresi regex V yang luar biasa .
sumber
-
diizinkan.R ,
6663 byteCobalah online!
-3 byte terima kasih kepada Scarabee
Fungsi anonim; mengembalikan akronim sebagai vektor
c("N","A","T","O")
yang dicetak secara implisit.Untuk sekali ini, ini tidak terlalu buruk di R! memisahkan
-
atau(space)
mengambil elemen pertama dari masing-masing, dan kemudian mengembalikan yang mana adalah kapital (LETTERS
adalah huruf R yang dibangun dengan huruf kapital), secara berurutan.sumber
function(s)(s=substr(strsplit(s,' |-')[[1]],1,1))[s%in%LETTERS]
Python 2 ,
5956 byte-3 byte terima kasih kepada Lynn
Cobalah online!
sumber
'@'<b<'['
, solusi yang sangat bagus +1'@'<b<'['>a in' -'
menghemat 3 byte.Javascript 21 byte
Mengambil input string dan menampilkan array string yang berisi karakter akronim
Penjelasan
Itu hanya pertandingan regex global untuk batas kata yang diikuti dengan huruf kapital.
sumber
Retina ,
2117 byteCobalah online!
Penjelasan
Keluarkan kecocokan regex
(?<=^| |-)[A-Z]
di input, satu per baris (!
).sumber
Dyalog APL,
2923 byteKaset uji bonus: Bahasa Pemrograman (APL).
Mengembalikan array karakter (ditampilkan sebagai ruang yang dipisahkan pada TIO).
Cobalah online!
Posting lebih lama, 29 byte
Cobalah online!
Bagaimana?
'(\w)\w+'⎕R
- Ganti setiap cluster karakter alfabet'\1'
- dengan karakter pertamanya~⍨
- Hapus setiap char(⎕AV~⎕A)
- itu bukan huruf kapital ASCIIsumber
Python, 53 byte
Cobalah online!
Ekspresi reguler sederhana dengan lookahead untuk spasi atau tanda hubung. Daripada mencocokkan awal, tambahkan spasi.
sumber
C #,
8478 byteDisimpan 6 byte berkat @jkelm .
Cobalah online!
Versi Lengkap / Diformat:
sumber
using System.Linq
dalam jumlah byte jikausing System.Collections.Generic
dikecualikan? Apakah ada konsensus yangusing
dapat dihitung?using System.Linq;
diperlukan untuk kode Linq dalam jawaban saya. Namun,IEnumerbale<char>
bukan bagian dari jawabannya dan itu adalah bagian dari kode yang perluusing System.Collections.Generic;
dikompilasi.Julia 0.6.0 (57 byte)
Penjelasan: Ini adalah golf kode pertama saya. Cukup lurus ke depan. Pisahkan kata-kata, cetak masing-masing huruf pertama.
Mungkin mudah dilakukan dengan lebih baik menggunakan regex tapi saya baru dalam hal ini
sumber
05AB1E , 11 byte
Cobalah online!
sumber
C # (.NET Core) , 108 byte
Cobalah online!
sumber
if
ke terner mungkin menghemat byte. Ini dimulai pada indeks2
alih-alih1
, ubah sajaint i=1
keint i=0
untuk memperbaikinya. Selain itu saya tidak berpikir ada banyak lagi yang bisa Anda lakukan di sini.Jelly ,
1110 byte-1 byte terima kasih kepada Erik the Outgolfer (
Ḳ
terbagi dua spasi> _ <)Tautan monadik yang mengambil dan mengembalikan daftar karakter.
Sebagai program penuh menerima string dan mencetak hasilnya.
Cobalah online! atau lihat test suite .
Bagaimana?
sumber
Ḳ
sajaṣ⁶
?Perl 5 , 25 byte
24 byte kode +1 untuk
-n
.Mengganggu bahwa
grep -P
mendukung panjang variabel melihat-belakang tetapi Perl tidak :(.-1 byte terima kasih kepada @Dada !
Cobalah online! - termasuk
-l
untuk menjalankan semua tes sekaligus.sumber
s///
atau$_=
meniadakanprint
...s///
untuk menyelesaikan ini tetapi tidak jelas ... Saya sedang bekerja, mungkin saya akan mencobanya lagi nanti!MATL , 19 byte
Cobalah online!
sumber
Brachylog ,
252322 byteCobalah online!
(-2 byte terima kasih kepada @Fatalize.)
sumber
Ṣ
alih-alih" "
menyimpan dua byteJapt ,
191614 byte-2 byte terima kasih kepada Shaggy
Cobalah online!
sumber
"(^| |-)%A"
ke/^| |-)\A/
untuk menyimpan bytemf\A
->mÌ
untuk menyimpan 2 byte.Cepat 5 , 110 byte
Terima kasih kepada Cœur
Penjelasan detail
import Foundation
- Mengimpor modulFoundation
yang sangat penting untukzip()
, bagian utama dari kode ini.func f(s:[String]){...}
- Membuat fungsi dengan parameters
, yaitu daftar String, mewakili karakter input.for i in zip(s,[" "]+s){...}
- Iterate dengani
melalui zip input dan input dengan spasi yang ditambahkan di awal, yang sangat membantu untuk mendapatkan karakter sebelumnya dalam String.if
- Cek apakah:i.0==i.0.uppercased()
- Karakter saat ini adalah huruf besar,&&"- ".contains(i.1)
- dan Jika karakter sebelumnya adalah spasi atau tanda hubung.Jika kondisi di atas terpenuhi, maka:
print(i.0)
- Karakter dicetak, karena itu adalah bagian dari akronim.sumber
import UIKit
bukanimport Foundation
.PowerShell , 43 byte
Cobalah online!
Belum dibuka:
sumber
Python 3 , 67 byte
Cobalah online!
sumber
Python 3 ,
7370 byteCobalah online!
Penjelasan
lambda n:
- Membuat fungsi lambda anonim dengan parameter Stringn
.n[x]
- Mendapat karaktern
at indexx
.for x in range(len(n))
- Berganti dari0
panjangn
, menamai variabelx
.if
- Cek:'@'<n[x]<'['
- Jika karakter huruf besar,and(' '+n)[x]in' -'
- Dan jika itu didahului oleh spasi atau tanda hubung dalam String yang dibentuk oleh spasi dann
.sumber
i supper
, dan saya tidak tahu kenapa?.isupper()
, saya tidak tahu apa yang Anda baca: pJavaScript (SpiderMonkey) , 62 byte
Cobalah online!
sumber
QuadS , 17 byte
Cobalah online!
sumber
Pyth,
1516 byteSuite uji
sumber
Pyth, 12 byte
Test suite di sini.
sumber
Bash (grep),
2928 byteSebuah port jawaban python saya tetapi karena
pgrep
mendukung panjang variabel terlihat di belakangnya terasa lebih pendek (bahkan terhitung untuk overhead python). Tempel kotak uji dalam file bernamaa
, output adalah 1 karakter per baris.-1 Terima kasih kepada Neil
sumber
^| |-
mungkin tes yang lebih pendek?RProgN 2 , 18 byte
Dijelaskan
Cobalah online!
sumber
PHP, 62 byte
Jalankan sebagai pipa dengan
-nR
atau coba online .solusi lain:
sumber
C ++, 168 byte
Output dilakukan melalui parameter
sumber
#include<string>
dan menganggap argumennyas
adalahstd::string
?Lua ,
7975 byteCobalah!
Saya memasang cetakan () sebelum akhir pada versi coba karena kalau tidak berantakan. Program ini dengan sempurna mematuhi persyaratan I / O dan pencocokan, tetapi tanpa baris baru tambahan itu cukup sulit untuk dibaca.
Input diberikan dalam bentuk tabel angka: string, angka bertambah 1 setiap kali dan mulai dari 1.
Penjelasan:
Itu untuk loop melalui gmatch dari setiap string input. Pencarian gmatch adalah sebagai berikut:
[% - | ] - Kelompokkan, cari - atau spasi
% u - Mencari karakter huruf besar
Kemudian untuk setiap pertandingan, itu mencetaknya minus tanda hubung atau spasi sebelumnya
Sunting: Memotong 4 byte dengan menghapus deklarasi 'a' dan menambahkan spasi ke input di dalam for loop in, serta mengubah sub input menjadi hanya 2 daripada 2,2 (yang menghasilkan hasil yang setara)
sumber
Pyth , 12 byte
Dibuat satu tahun setelah jawaban awal.
Cobalah online!
Pyth , 21 byte
Jawaban awal.
Cobalah online!
sumber
-|
kurang dari satu byte[ -]