Sudah beberapa bulan yang kasar di tempat kerja dan saya merasa seperti saya hanya ingin berteriak langsung ke wajah bos saya. Namun, saya bukan orang yang secara langsung menghadapi orang-orang yang memiliki masalah dengan saya. Saya juga tidak ingin kehilangan pekerjaan.
Jadi inilah ide: Saya ingin bisa menghinanya, tanpa dia pernah mengetahuinya. Dan saya menyadari cara yang sempurna: Saya membutuhkan beberapa jenis perangkat lunak yang mengkodekan penghinaan di dalam pesan yang dinyatakan sangat baik. Dan melihat bagaimana dia dikenal tidak melihat hutan untuk pohon, saya pikir saya tahu caranya:
Tuliskan saya program yang memasukkan string dengan panjang yang tidak diketahui, tetapi tidak berisi jeda baris. Ini akan menjadi pesan mentah yang ingin saya kirim.
Jika memungkinkan, kembalikan string yang diformat sedemikian rupa sehingga pesan "DIE IN A GREASE FIRE" membentuk seluruh kolom kiri. Dengan paragraf baru di mana spasi di antara kata-kata harus pergi. Sekarang, karena saya sangat marah, sama pentingnya bahwa setiap huruf dalam huruf besar.
Anda tidak boleh memodifikasi string dengan cara lain, yaitu Anda tidak dapat mengubah semua string menjadi karakter huruf besar.
Jika string yang dimaksud tidak dapat diformat dengan cara ini, Anda harus mengembalikan string yang asli. Baca input dari input standar.
Aturan normal berlaku: Tidak ada permintaan HTTP, tidak ada konsultasi Marvin dari THGTTG, dll.
Input contoh:
Dear Boss, bagaimana kabarnya? Telah menjadi perhatian saya bahwa saya menerima semua kesalahan atas kecelakaan itu Jumat lalu. Bukan hanya mayoritas. Setiap bagian terakhirnya. Apakah salah bagi saya untuk berpikir bahwa anggota tim lainnya setidaknya ikut bertanggung jawab? Lagipula, kami berenam terlibat sejak awal. Bukannya saya pikir saya harus berdiri tanpa menyalahkan. Tidak semuanya. Yang saya katakan adalah ini: Saya melakukan yang terbaik. Saya berusaha keras. Saya meningkatkan terus-menerus. Dan saya terus mengambil tanggung jawab. Secara umum, saya baik-baik saja dengan mengambil tanggung jawab penuh atas tindakan saya. Tetapi setelah musim semi ini, tampaknya saya mendapatkan lebih dari yang pantas saya dapatkan. Ingat kontrak Flakenhauser? Semuanya turun semulus yang diharapkan. Atau begitulah tampaknya pada awalnya. Hanya pada menit terakhir hal-hal menjadi berantakan. Semua tim sepakat bahwa itu lebih mirip dengan kecelakaan aneh daripada perencanaan yang ceroboh atau sumber daya yang salah kelola. Tetap saja, saya - sendiri - disalahkan karenanya. Meskipun saya tidak mengatakan apa-apa saat itu, tingkat toleransi saya untuk disalahkan mengambil penyok serius kemudian. Sejak saat itu, saya merasa perlu untuk selalu berusaha dua kali lebih keras, hanya untuk menghindari pengawasan. Dan tetap saja, ini dia lagi. Terlepas dari semua pencapaian saya. Tepat di tempat kita selalu berakhir akhir-akhir ini. Setiap proyek. Menjadi tak tertahankan. hanya untuk menghindari pengawasan. Dan tetap saja, ini dia lagi. Terlepas dari semua pencapaian saya. Tepat di tempat kita selalu berakhir akhir-akhir ini. Setiap proyek. Menjadi tak tertahankan. hanya untuk menghindari pengawasan. Dan tetap saja, ini dia lagi. Terlepas dari semua pencapaian saya. Tepat di tempat kita selalu berakhir akhir-akhir ini. Setiap proyek. Menjadi tak tertahankan.
Contoh output:
Dear Boss, bagaimana kabarnya?
Telah menjadi perhatian saya bahwa saya menerima semua kesalahan atas kecelakaan itu Jumat lalu. Bukan hanya mayoritas.
Setiap bagian terakhirnya.Apakah salah bagi saya untuk berpikir bahwa anggota tim lainnya setidaknya ikut bertanggung jawab? Lagipula, kami berenam terlibat sejak awal.
Bukannya saya pikir saya harus berdiri tanpa menyalahkan. Tidak semuanya.Yang saya katakan adalah ini: Saya melakukan yang terbaik. Saya berusaha keras. Saya meningkatkan terus-menerus. Dan saya terus mengambil tanggung jawab.
Secara umum, saya baik-baik saja dengan mengambil tanggung jawab penuh atas tindakan saya. Tetapi setelah musim semi ini, tampaknya saya mendapatkan lebih dari yang pantas saya dapatkan.
Ingat kontrak Flakenhauser.
Semuanya turun semulus yang diharapkan. Atau begitulah tampaknya pada awalnya. Hanya pada menit terakhir hal-hal menjadi berantakan.
Semua tim sepakat bahwa itu lebih mirip dengan kecelakaan aneh daripada perencanaan yang ceroboh atau sumber daya yang salah kelola.
Tetap saja, saya - sendiri - disalahkan karenanya.
Meskipun saya tidak mengatakan apa-apa saat itu, tingkat toleransi saya untuk disalahkan mengambil penyok serius saat itu.Sejak saat itu, saya merasa perlu untuk selalu berusaha dua kali lebih keras, hanya untuk menghindari pengawasan. Dan tetap saja, ini dia lagi.
Terlepas dari semua pencapaian saya.
Tepat di tempat kita selalu berakhir akhir-akhir ini.
Setiap proyek. Menjadi tak tertahankan.
Ini kode golf. Kode terpendek menang.
Jawaban:
CJam,
5653 byteCobalah online!
Bagaimana itu bekerja
sumber
Perl - 60 byte
Menghitung shebang sebagai satu.
Solusi ini menggunakan string paling dalam untuk membangun regex berikut:
yang mirip dengan regex yang digunakan dalam solusi m.buettner . Regex yang dihasilkan kemudian dicocokkan dengan input. Dalam konteks daftar, ini akan mengembalikan array yang berisi masing-masing grup pertandingan, yang digabungkan bersama oleh baris baru (alasan untuk grup 'tidak ada yang cocok'
(\.*)
, adalah untuk memasukkan baris baru tambahan). Jika tidak ada kecocokan, string asli adalah output.Perl - 73 byte
Menghitung shebang sebagai dua.
Ini membagi string pada pembatas yang sesuai, dan mengumpulkan potongan-potongan dalam array. Jika salah satu dari mereka gagal untuk mencocokkan, pemisah catatan keluaran (yang ditetapkan ke baris baru dengan
-l
opsi) tidak disetel, sehingga string yang dihasilkan tidak dimodifikasi.sumber
./script.pl
, maka kemungkinan besar ya. Jika dipanggil sebagaiperl script.pl
, maka no..
Setelah ituI
akan menyisipkan baris baru tambahan sebelumnyaI
(karena cocok lagi pada posisi yang sama). Mungkin agak kontra-intuitif.-M
opsi ke shebang, yang akan mati dengan kesalahan fatal:Too late for "-M" option at line 1.
Tapi alasan utama saya meletakkannya di sana, saya juga menghindari perlu menjelaskan bahwa itu perlu dijalankan karenaperl -pl script.pl
- dalam bentuk saat ini, ia berjalan dengan adanya.GolfScript, 53 byte
Sepertinya Dennis dan saya datang dengan hal-hal yang hampir serupa secara paralel ... Tapi inilah usaha saya.
Klik tautan sebelum setiap blok kode untuk mencobanya secara online. Sayangnya, juru bahasa online tidak akan mengizinkan Anda menjalankan kode yang lebih besar dari 1024 karakter, jadi saya harus melakukan beberapa ... "kompresi" dari input tes. Tetapi itu masih bekerja.
Versi terjepit
Versi komentar yang tidak dikosongkan
Poin yang diajukan oleh Dennis: Semua program GolfScript mencetak baris baru akhir otomatis. Apakah ini harus membatalkan solusi saya apa adanya, saya tidak yakin. Saya percaya akan ada biaya 4 karakter untuk menekan baris baru terakhir dengan menambahkan
"":n
suatu tempat di dekat akhir.sumber
Ruby - 140
Tidak ada regex yang satu ini . Secara bersamaan berjalan karakter dalam input ARGV [0], dan string yang berisi karakter kita perlu istirahat untuk membuat pesan kolom kiri kita. Awalnya akan menempel spasi setelah huruf-huruf yang perlu memiliki baris baru, tetapi menemukan bahwa itu sedikit lebih pendek untuk meng-hardcode indeks di mana untuk memasukkan garis istirahat.
Setelah semua dikatakan dan dilakukan, ini memeriksa untuk melihat bahwa
i
indeks telah meningkat cukup banyak kali untuk melewati setiap huruf yang perlu dipatahkan. Jika belum, kami cukup mencetak string aslinya. Jika sudah, kami berikan yang diformat.n-[i]!=n
adalah trik yang rapi untuk menyimpan karakter ketika memeriksa apakah indeks saat ini adalah salah satu yang membutuhkan jeda baris tambahan (dibandingkan dengann.include? i
). Juga menyimpan beberapa karakter dengan menggunakan{}
s alih-alihdo/end
meskipun merupakan blok multiline, dan menggunakan kondisi ternary pada put terakhir untuk menyimpan karakter ketika menentukan mana yang akan dihasilkan.Bukan yang terpendek, tapi saya pikir akan rapi untuk dilakukan tanpa ekspresi reguler.
sumber
Perl, 184 byte
Bukan skor spektakuler untuk Perl, tapi di sini ada solusi regex sederhana
sumber
print($_)
==print
. Poin +1 untuk keterbacaan: Sangat mudah untuk melihat apa yang sedang terjadi yang tidak persis seperti solusi lain.JavaScript 116
Implementasi Javascript dari ide m-buettner
Cuplikan tes
sumber
FIFA
tes (komentar OP)From that FIFA point on
. Ini menempatkan baris baru sebelumFA
, dan sebelum spasi sebelumnyaFI
.Python3 (
166138)Golf:
Isgolfed-ish:
Meskipun penggunaan lambda agak menyenangkan saya, jumlah variabel yang digunakan dan perkembangan yang agak berantakan memiliki efek sebaliknya. Regex mungkin ide yang bagus juga. Hay ho, setidaknya berhasil :).
Sunting: menggantikan variabel lambda dengan
count
builtin, dan pernyataan perpecahan yang disingkat.sumber
Python3 (165)
Tidak disatukan
Penjelasan
chunk
secara rekursif memisahkan ujung pesan yang berisi tajuk terakhir dan menambahkannya ke daftar.Peringatan: ini tidak akan berhasil jika tidak ada ruang sama sekali antara dua judul yang diusulkan dalam surat Anda untuk beberapa alasan, tetapi itu tampaknya tidak mungkin dalam surat kepada bos Anda.
sumber
Ruby 115
Ruby 95
sumber
J -
110103 byteMengapa J tidak memiliki fungsi yang baik untuk menangani string, tetapi hanya fungsi array? Saya akan merevisi ini jika saya menemukan sesuatu yang pintar.
Sunting: Output yang dipersingkat dan diperbaiki (sebelumnya memiliki spasi tambahan) dan pemeriksaan. Saya juga meningkatkan penjelasannya.
Penjelasan:
Contoh (terlalu lama?):
sumber
JavaScript (ES6),
93115 byteSaya biasa
replace
menelusuri string, dengan kecocokan untuk/\b./g
hanya menemukan karakter yang mengikuti spasi atau memulai string. Kemudian saya memeriksa setiap karakter untuk melihat apakah itu cocok dengan indeks saat ini dalam array yang saya cari, dan menambahkan baris baru sebelum itu jika itu benar, dan bertambahi
.EDIT: Kehilangan kebutuhan untuk membuat baris baru di antara kata-kata. Saya sudah melakukan itu sekarang, yang membawanya ke 115.
sumber
PHP, 328 byte
Diberikan file bernama 'G' yang berisi teks mentah ke "enmessage"
Penjelasan (~ kode ungolfed && yang dikomentari):
sumber
PHP, 136 byte
jika seluruh penghinaan bisa dimasukkan; mencetak string yang dimodifikasi dengan spasi atau linebreak terkemuka; output kosong jika tidak. Jalankan dengan
-r
.kerusakan
sumber
Python - 190 Bytes
Tidak disatukan
Ini adalah usaha golf pertama saya :) Mencari untuk mempelajari beberapa teknik pengkodean yang hebat, terlepas dari itu, saya hanya fokus menggunakan find dan kemudian beberapa string splicing untuk menemukan karakter yang sesuai dan memformat output.
Variabel -
lr = l ditugaskan karakter yang akan kami gunakan sebagai panduan kami untuk membuat paragraf berformat baru kami. r ditugaskan karakter baris baru untuk kita dalam mengatur jarak keluaran baru.
k, p = Paragraf masukan. K digunakan untuk kembali ke aslinya karena tidak ditugaskan kembali selama pelaksanaan skrip. Saya memeriksa x untuk mengetahui kapan menambahkan garis ganda baru untuk tujuan penspasian.
y, i = y adalah semacam "kursor", melacak posisi terakhir karakter ditemukan sehingga kami menemukan paragraf dengan benar untuk tujuan penyambungan, saya memeriksa kewarasan, jika kami tidak menekan semua karakter kami, kami kembalikan paragraf (variabel p) ke input aslinya melalui variabel k.
h = Panjang input, yang kami gunakan dalam splicing.
x = Posisi karakter saat ini diwakili oleh C, yang digunakan untuk splicing juga.
c = Karakter dalam l untuk beralih dan cari.
Kode berikut ditulis ulang dan dikeluarkan dari kode asli agar mudah dibaca seperti apa yang terjadi:
Saya sangat menghargai tanggapan Anda! Saya ingin belajar.
sumber
x<0
kei
. Dalam python True sama dengan 1 dan False sama dengan 0. Jadi jika x adalah -1, ia menambahkan 1 dan sebaliknya 0.i+=
sama dengani=i+
True == 1
memberi. :)