Objektif
Tujuan Anda adalah membuat program yang mengubah input ke akronimnya. Masukan Anda dijamin hanya memiliki huruf dan spasi. Input akan memiliki tepat satu spasi di antara kata-kata. Anda harus menampilkan akronim dari input.
Aturan
- Kode Anda tidak boleh peka huruf besar-kecil (mis.
foo
DanFoo
sama) - Kode Anda harus mengabaikan kata-kata berikut dan tidak menempatkannya dalam akronim:
and or by of
- Anda tidak dapat berasumsi bahwa kata-katanya semua huruf kecil.
- Keluaran harus sepenuhnya ditulis dalam huruf kapital, tanpa pemisahan antara karakter.
- Newline tambahan diterima tetapi tidak perlu.
- Jika bahasa Anda memiliki fungsi akronim bawaan, Anda mungkin tidak menggunakannya.
Contohnya
(input / output dikelompokkan)
United States of America
USA
Light Amplification by Stimulation of Emitted Radiation
LASER
united states of america
USA
Jordan Of the World
JTW
Mencetak gol
Ini adalah tantangan kode-golf sehingga kode terpendek menang.
Papan peringkat
var QUESTION_ID=75448,OVERRIDE_USER=8478;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
T` l
)Jawaban:
Pyth,
252120 byteCoba di sini!
Terima kasih kepada @Jakube karena telah menghemat satu byte!
Penjelasan
String yang dikemas menjadi
ANDBYOROF
sumber
."@YK½¼
menghemat satu byte lebih"ANDORBYOF
. Itu pada dasarnya@ANDBYOROF
dikemas.@ANDBYOROF
dan lihat apa yang Anda dapatkan.Jelly ,
2120 byteCobalah online!
(-1 terima kasih kepada @Dennis.)
Kamus Jelly agak aneh karena memiliki
AND
huruf besar namunby
dalam huruf kecil ...sumber
Retina, 29
3136byteDimaksudkan baris baru di akhir.
Terima kasih kepada Martin Büttner karena telah menghemat 5 byte
Cobalah online
sumber
T`l`L
harus dilakukanJavaScript (ES6), 56 byte
Menyimpan satu byte berkat @ edc65.
Penjelasan
Kode ini cukup jelas, saya hanya akan menjelaskan regex:
Itu menghapus semua karakter yang cocok ini dan huruf besar kata
sumber
i
flagJavaScript,
61646663 byteIni menggunakan Ekspresi Reguler untuk menemukan kata-kata yang bukan dari daftar
and, or, of, by
:, dan menangkap huruf pertama. Ini kemudian memanfaatkan huruf yang dihasilkan string.EDIT: 64 Bytes - Memperbaiki kata mulai dengan
of,or,by,and
EDIT: 66 Bytes - Tetap untuk memeriksa semua kata termasuk kata terakhir.
EDIT: 63 Bytes - Disimpan 3 Bytes berkat @ edc65 dan @Cyoce !
sumber
Foo Offline Bar
i
flagvim, 46
Saya sangat menyukai bagian terakhir itu. Yang pertama
.
di regex cocok dengan karakter pertama dari baris. Kemudian kita gunakan\zs
untuk memulai bagian "sebenarnya sedang diganti", secara efektif tidak menggantikan karakter awal..*
cocok dengan sisa baris, dan\n
cocok dengan baris tambahan. Karena kami tidak menentukan string pengganti, vim hanya menghapus semua yang ada dalam pertandingan, hanya menyisakan inisial.sumber
vim
adalah bahasa pemrogramanCJam,
282422 byteCobalah online . Terima kasih kepada Sp3000 karena menunjukkan bug dan menyarankan perbaikan, dan kepada Dennis untuk menyimpan
46 (!) Byte.Penjelasan
Dennis menyarankan trik ini untuk memperpendek daftar kata: Kita bagi
AOBONRYFD
menjadi empat bagian, kita dapatkanMemindahkan kolom ke dalam baris dengan
z
operator, kami mendapatkan kata-kata yang tepat!sumber
Julia,
72636155 byteIni adalah fungsi anonim yang menerima string dan mengembalikan string. Untuk menyebutnya, tetapkan ke variabel.
Kami mengonversi string menjadi
uppercase
, memilih setiap kecocokan dari ekspresi reguler\b(?!AND|OR|OF|BY)\S
sebagai array, danjoin
itu menjadi string.Disimpan 8 byte berkat Dennis!
sumber
Perl, 32 byte
+1 byte untuk
-n
bendera.Algoritma dicuri dari jawaban @A AlexA .
sumber
Ruby,
4543 byteIni adalah fungsi lambda yang menerima string dan mengembalikan string. Untuk menyebutnya, tetapkan ke variabel dan lakukan
f.call(input)
.Ini menggunakan pendekatan yang sama dengan jawaban Julia saya , yaitu dikonversi ke huruf besar, dapatkan kecocokan dari ekspresi reguler
\b(?!AND|OR|OF|BY)\S
, dan bergabung menjadi string.Coba di sini
Disimpan 2 byte berkat manatwork!
sumber
.join
→*''
. Ngomong-ngomong, tidak perlu untuk menetapkan apa pun untuk menyebutnya. Cukup berikan argumen sebagai subskrip:->s{s.upcase.scan(/\b(?!AND|OR|OF|BY)\S/)*''}['United States of America']
PHP, 92 byte
Usaha pertama di kode golf.
Variabel
$s
adalah frase yang akan dikonversi:$s = "United States of America"
.Membutuhkan PHP 5.4 atau lebih tinggi untuk sintaks array pendek agar berfungsi.
sumber
bytes
kecuali dinyatakan lain, dan Anda dapat menggunakan hanya#
pada awal baris untuk membuat header.$s
membutuhkanregister_globals
, tetapi yang telah dihapus dari PHP sejak 5.4, jadi jawaban Anda tidak dapat berfungsi karena Anda memerlukan 5.4 untuk sintaks array pendek. Anda perlu mendapatkan string input sebagai argumen ($argv
, argumen fungsi atau yang serupa).Bash + GNU coreutils,
10376 byteJalankan dengan
baik dengan argumen tunggal yang dikutip atau dengan banyak argumen.
(Saya terdistorsi kata terakhir mengandung dari ).
60 byte
Terima kasih kepada @manatwork.
sumber
awk
panggilan itu terlihat mengerikan. Bagaimana dengan menggantinya${@^^}
?grep
panggilannya[[ $i = @(AND|OR|BY|OF) ]]
. ;) Dan dengan itu Anda juga dapat menghapus bagian "+ GNU coreutils" dari header posting.echo
denganprintf
. Selanjutnya Anda dapat menerapkan Digital Trauma 's penjepit ujung juga. (Lebih lanjut dalam Tip untuk bermain golf di Bash .)for i in ${@^^};{ [[ $i = @(AND|OR|BY|OF) ]]||printf %c $i;}
\b
tetapi couldnot menemukannya ... Dan aku tidak tahu bahwado...done
bisa mengganti dengan kurung kurawal.JavaScript,
10485 byteDisimpan 19 byte berkat @ Aplet123 .
Pisahkan string dengan spasi kemudian periksa apakah itu kata-kata, atau, dan, atau oleh. Jika ya, ia mengabaikannya, jika tidak maka ia harus huruf pertama. Kemudian bergabung dengan array dan membuat string huruf besar.
Tidak Disatukan:
sumber
var
. Kami tidak khawatir mencemari ruang lingkup global dalam kode golf: P_.map(v=>/o(f|r)|and|by/.test(v)?"":v[0])
sebagai ganti""
. Anda dapat menghapus_.forEach(p=>Z+=p[0].toUpperCase());
baris Anda dan menggantireturn Z
baris Anda denganreturn Z.join("").toUpperCase()
MATL ,
3427 byte1 byte lebih sedikit berkat @AndN
Cobalah online!
sumber
XkYb{'OF' 'AND' 'OR' 'BY'}X-c1Z)!
05AB1E ,
333228 byteKode:
Menggunakan pengodean CP-1252 .
sumber
Python, 81 byte
sumber
Haskell,
10099988275 bytesSaya cukup yakin ini bisa dipersingkat lebih banyak karena saya masih payah dalam menggunakan$
,.
dll. Jadi saya tetap menggunakan()
insted =)Terima kasih @nimi untuk sihir bantuan Anda!
Contoh:
sumber
.
composition operator looks quite intuitive. I am just never sure what is evaluated in what order.$
dan komposisi dengan.
.a x=[h!!0|h<-w$toUpper<$>x,notElem h$w"OF BY OR AND"]
.Python,
10396 byteIni adalah upaya pertama saya di golf kode, dan ini mungkin bisa lebih banyak golf. Terima kasih kepada DenkerAffe karena telah menyimpan tujuh karakter.
Dibutuhkan input, mengubahnya menjadi daftar kata dan mengambil huruf pertama mereka jika itu bukan salah satu kata terlarang, kemudian mengubah semuanya menjadi huruf besar.
sumber
input
vsraw_input
, +2 forprint("".join..)
vsprint"".join..
) Also no space between a symbol and a keyword.x[0]for ...
sepenuhnya valid dalam Python.JavaScript,
80725553 byteKode
Saya baru saja membaca tentang fungsi panah dan menyadari bahwa saya dapat mempersingkat ini lebih jauh.Menurut ini , Anda tidak menghitung tugas dalam panjangnya, jadi -2 byte.Ini golf pertama saya, jadi tidak terlalu bagus.
sumber
PHP,
686158 byteMenggunakan penyandian ISO-8859-1.
Jalankan seperti ini (
-d
ditambahkan hanya untuk estetika):Tidak Disatukan:
ucwords
.ß
(biner11011111
) untuk binerAND
alih-alih ruang dinegasikan (biner00100000
).sumber
Mathematica,
132117 byte15 byte disimpan berkat @CatsAreFluffy.
sumber
StringSplit
default untuk dipisahkan di whitespace (-5bytes)"of"|"and"|"or"|"by"
. Juga{"a","b","c"}<>""==StringJoin[{"a","b","c"}]
. Satu hal terakhir:Characters
secara otomatis memetakan daftar.PowerShell, 81 Bytes
Penjelasan
Berpisah pada spasi membuat array. Jatuhkan anggota yang menyinggung. Tarik karakter pertama dan bergabunglah bersama. Gunakan
ToUpper()
pada string yang dihasilkan.sumber
Lua, 122 Bytes
Saya ingin sekali menggunakan pola untuk menghilangkan kata-kata yang dilarang, tetapi sayangnya, lua tidak dibuat untuk mencocokkan grup karakter ... Jadi saya harus menggunakan for for loop, yang jauh lebih mahal.
Tidak disatukan
sumber
Faktor, 175 byte
Saya belajar banyak dengan menulis ini.
Sebagai sebuah kata:
Tes unit:
Lulus!
sumber
Lua,
11311293 bytessumber
%w
! That's a great one!%a
;%a
matches letters, and%w
matches letters and numbers. The main thing is using a custom function ingsub
.AND OR BY OF
ketika memilih kata-kata ... Saya tidak menggunakan fungsi khusus karena harganya mahal, jadi sayagsub("(%a)%a+",string.upper)
setelah menghapusnya akan lebih baikC #, 134 byte
Golf
Dapat dibaca
Jalankan dari baris perintah
75448.exe Amplifikasi Cahaya dengan Stimulasi Radiasi yang Dipancarkan
75448.exe Amerika Serikat
sumber
IPOS - tidak bersaing, 27 byte
Ini berfungsi dalam versi saat ini (v0.2) dari juru bahasa .
Contoh dijalankan
Garis miring terbalik hanya ada untuk lolos dari kutipan dan tidak diperlukan untuk program.
Penjelasan
sumber
bash / GNU coreutils, 60 byte
sed -e's/\b'{and,o[rf],by}'\W*//Ig' -re's/(\w)\S* ?/\u\1/g'
sumber
Pylongolf2 , 14 byte (UTF-8)
Pylongolf2 memiliki banyak karakter non-ASCII yang dihitung sebagai 2 byte.
sumber
05AB1E , 19 byte (tidak bersaing ...?)
Cobalah online!
Versi yang pasti bersaing (21 byte):
Cobalah online!
sumber