Adakah yang ingat Boaty ?
Anda benar-benar bisa membuat kata lama, bukan?
- Tulis fungsi untuk mengubah string menjadi Sesuatu McSomethingface.
- Ini harus menerima satu string sebagai input. Abaikan kasus input.
- Jika kata berakhir dengan 'y', fungsi Anda seharusnya tidak menambahkan 'y' tambahan ke instance pertama, tetapi harus menghapusnya dalam instance kedua.
- Jika kata berakhir dengan 'ey', seharusnya tidak ada tambahan 'y' yang ditambahkan pada instance pertama, tetapi harus menghapus keduanya pada instance kedua.
- Output seharusnya hanya memiliki huruf besar dalam karakter pertama, 'M' dari 'Mc' dan karakter pertama setelah 'Mc'.
- hanya perlu bekerja dengan string 3 karakter atau lebih.
Contoh:
boat => Boaty McBoatface
Face => Facey McFaceface
DOG => Dogy McDogface
Family => Family McFamilface
Lady => Lady McLadface
Donkey => Donkey McDonkface
Player => Playery McPlayerface
yyy => Yyy McYyface
DJ Grand Master Flash => Dj grand master flashy McDj grand master flashface
' y'
dan' '
Jawaban:
Stax , 26 byte
Jalankan dan debug itu
Jalankan yang ini
sumber
V , 27
2830byteCobalah online!
<Esc>
mewakili0x1b
Golf dua byte setelah mengetahui bahwa kami tidak perlu mendukung input dengan kurang dari 3 karakter.
1 byte disimpan berkat @DJMcMayhem dengan bekerja pada baris kedua sebelum yang pertama, sehingga menghapus
G
Input ada di buffer. Program dimulai dengan mengubah segalanya menjadi huruf kecil
V
menyeleksi garis danu
lowercases itu~
matikan huruf besar karakter pertama (mengubahnya menjadi huruf besar)dan
Ù
menduplikasi baris ini di atas, meninggalkan kursor di baris bawahó
dan menggantie¿y$
, bentuk terkompresie\?y$
(opsionale
dan ay
di akhir baris), tanpa apa-apa (terjadi pada baris kedua)H
pergi ke baris pertamaó
menggantiy$
(y
pada akhir baris) dengan tidak ada pada baris pertamaÁ
menambahkan ay
ke akhir baris pertamaJ
dan bergabung dengan baris terakhir dengan yang pertama dengan spasi di tengah, dan kursor dipindahkan ke ruang inia
menambahkanMc
(<Esc>
kembali ke mode normal)A
akhirnya, ditambahkanface
di akhir barissumber
Python, 144 byte
Cobalah online di sini
sumber
f("Face")
tidak mematuhi kasus uji saat ini ( TIO ).Excel,
204144137165 byteDari dalam ke luar:
Jawaban lama, membuat semua bit secara terpisah, dan kemudian menggabungkan (176 byte). Tidak menangani kasus dengan pembatas ruang dengan benar.
sumber
PROPER(A1)
tidak valid (lihatDJ Grand Master Flash
kasus input), pengganti terbaik yang dapat saya temukan saat mengerjakan solusi VBA saya adalahLEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))
- tolong beri tahu saya jika Anda akhirnya bermain golf di bawah.Perl 6 ,
423735 byteCobalah online!
sumber
C # (.NET Core) ,
122108139175180179154 byteTerima kasih banyak, lee!
Cobalah online!
C # (.NET Core, dengan LINQ), 152 byte
Cobalah online!
sumber
SOGL V0.12 , 38 byte
Coba Di Sini!
sumber
Ruby ,
6149 byteCobalah online!
Menyimpan 12 byte manis berkat @MartinEnder:
sumber
=~
dan membangun seluruh string daripada menggunakansub
. Interpolasi string dapat digunakan tanpa tanda kurung jika variabelnya adalah variabel global, instance atau kelas.-p
bendera dan menggunakansub
: tio.run/...Python 3 , 80 byte
Pembaca yang sudah lama sekali, kiriman pertama saya akhirnya!
Cobalah online
sumber
Retina , 29 byte
Cobalah online!
sumber
Python 2 ,
8892 byteCobalah online!
sumber
Java 8,
121112107106 byte-1 byte terima kasih kepada @ OliverGrégoire .
Penjelasan:
Cobalah online.
sumber
~32
->95
untuk 1 byte disimpanJavaScript,
1039694 bytePass pertama yang cukup naif saat ini.
Cobalah online
sumber
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,``)}y Mc${s.replace(/e?y$/,``)}face
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,'')}y Mc${s.replace(/e$/,``)}face
Donkey
dan yang kedua gagalFace
.vim,
3534 byte<ESC>
aku s0x1b
Tidak disatukan
Cobalah online!
Disimpan 1 byte berkat DJMcMayhem
sumber
Y
daripadayy
Perl 5
-p
,4739 byteDisimpan 6 byte dengan saran @ OlegV.Volkov, 1 dengan @ mwellnhof's, dan 1 pada saya sendiri
Cobalah online!
sumber
ucfirst
:$_=lc^$";
$_=s/y$//r."y Mc".s/e?y$//r.face
lebih pendek satu byte./y$|$/
->/y?$/
C ++ 14 (g ++),
181171148147134 bytePerhatikan bahwa dentang tidak akan mengkompilasi ini.
Penghargaan untuk Kevin Cruijssen dan Olivier Grégoire untuk
&95
trik ini.Terima kasih kepada Chris untuk bermain golf 11 byte.
Cobalah online di sini .
Versi tidak disatukan:
sumber
s[0]=s[0]&~32;
kes[0]&=~32;
;s[i++]=s[i]|32;
untuks[i++]|=32
; danint i=1,n=s.length()-1,b;
sehingga Anda hanya perlu 1int
.#include<string>
n
dan hanya menggunakan nilaii
setelah loop sementara. Cobalah online!V ,
383632 byte-5 byte terima kasih kepada @Cows dukun
<esc>
adalah karakter pelarian literal dan[^
dikodekan sebagai\x84
Cobalah online!
sumber
gu$
bisa menjadiVu
[^
ini adalah jalan pintas regex (lihat di sini ), Anda dapat menggunakan 0x84 alih-alih[^
menyimpan byte. Demikian pula,\?
dapat disederhanakan menjadi<M-?>
untuk menyimpan byte lain. Dan$a
=>A
05AB1E , 30 byte
Cobalah online! atau sebagai Test suite
sumber
Python 3 ,
117114 byte-3 byte berkat Dead Possum
Cobalah online!
sumber
[s,s[:-1],'',s[:-2]
dapat diubah0
untuk menghemat 1 byte.'y'*1
*1
tidak diperlukan. 2 byte lagireturn
denganprint
1 byte lebih pendek.JavaScript (Node.js) , 87 byte
Cobalah online!
sumber
Buffer
, harus mencoba mengingatnya untuk tantangan di masa depan. Dapatkan hingga 87 byte untuk Anda.K4 ,
746968 byteLarutan:
Contoh:
Penjelasan:
Cari tahu apakah karakter terakhir sama dengan
"ey"
, konversi hasil ke basis-2 sehingga kita dapat mengabaikan kata-kata yang berakhir"e?"
. Indeks ke dalam daftar jumlah karakter yang akan dipotong.Berhasil mencukur 5 byte dari kode saya untuk menentukan apakah dua karakter terakhir
"ey"
tetapi berjuang untuk lebih baik ...Bonus:
67 byte port dalam K (oK) :
Cobalah online!
sumber
Ruby , 69 byte
Penjelasan:
Cobalah online!
sumber
s.capitalize
menggantikan yang sebelumnyas
? Jika tidak, tidak/e?y$/
menangani kasus uji berakhir diY
,EY
, atauEy
benar?s.capitalize
vss.capitalize!
(fungsi yang berbeda).s.capitalize!
clobbers versi lama.s.capitalize!
. Tidak pernah diprogram di Ruby, tetapi menambahkan tanda penjelasan untuk mengganti nilai sebelumnya cukup keren. +1 dari saya.Jstx , 27 byte
Penjelasan
Cobalah online!
sumber
Merah ,
143142 byteCobalah online!
Tidak Disatukan:
sumber
PHP: 132
Penjelasan:
sumber
Jelly ,
77757473 byteCobalah online!
Semua saran bermain golf disambut (dan diinginkan)!
sumber
Pyth,
3634 byteCobalah online!
Penjelasan:
sumber
rz3
kerz4
agar ini berfungsi dengan benar untuk kasus uji terakhir.Elixir ,
112110107106 bytesekarang sependek java
Cobalah online!
Penjelasan:
Mendapat
x
karakter pertama dalam huruf besar dan semua lainnya huruf kecil.Evaluasi kode dan masukkan ke dalam string.
Gabungan x dengan
y
jika tidak diakhiri dengany
(yaitu tidak cocok dengan regexy$
).Menghapus trailing
ey
dan trailingy
.sumber
PHP , 45
46byteCobalah online!
sumber
boAty
. (Topi salah, 'y' tidak dilepas).Pyth,
6059 byte SBCSSuite uji
Mereka tidak menampilkan di sini, tapi tiga byte,
Terjemahan Python 3:\x9c
,\x82
, dan\x8c
berada di string dikemas antaras
dan÷
. Yakinlah, tautannya termasuk mereka.sumber