Saya pasif agresif dan ingin menghina bos saya tanpa dia tahu

93

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.

Christofer Ohlsson
sumber
4
Apakah jeda baris harus terjadi hanya setelah tanda baca yang mengakhiri kalimat? Atau bisakah saya mendapat jeda baris, sebelum beberapa saat yang tepat sekarang atau mungkin bahkan dalam singkatan, selama huruf berikut adalah huruf besar? Meski begitu, tantangan yang berhubungan dengan penghinaan tidak berhasil di sini di masa lalu, tetapi Anda mungkin bisa lolos, karena Anda tidak meminta kreativitas peserta untuk mengeluarkan kata-kata kotor yang baru.
Martin Ender
1
Garis melanggar sebelum kata benda yang tepat baik-baik saja.
Christofer Ohlsson
3
@NateKerkhofs Saya pikir ini mundur: karena pesan rahasia hanya beberapa karakter di seluruh pesan, saya berpikir bahwa penghinaan adalah pohon, dan pesannya adalah hutan. Kami benar-benar berharap bos melihat hutan, bukan pohon.
Joshua Taylor
11
Apakah surat Arnold Schwarzenegger menginspirasi Anda?
200_sukses
57
Saya harus mengakui bahwa saya melakukan sedikit pengambilan ketika saya melihat ini di daftar Pertanyaan Panas. Ketika saya melihat itu PCG dan bukan The Workplace ... well ... Saya tidak akan mengatakan saya tidak sedikit kecewa.
BenM

Jawaban:

54

CJam, 56 53 byte

q_"DIEIINAAGGREASEFFIRE"{S@:A+S@+#:BA<AB>}%(!B)*\N*@?

Cobalah online!

Bagaimana itu bekerja

q_                     Read all input from STDIN and push a copy.
"DIEIINAAGGREASEFFIRE" Push the characters we're searching for in form of a
                       string. We'll try to prepend a linefeed to all of them.
                       Some characters are duplicated to prepend two linefeeds.
{                      For every character C in that string:
  S@                   Push ' ' and rotate the string on the stack on top of it.
  :A                   Save the string (initially the input) in A.
  +                    Prepend the space to A.
  S@+                  Construct the string " C".
  #                    Compute the index of " C" in the modified A.
  :B                   Save the index in the variable B.
  A<                   Push the substring of A up to the index.
  AB>                  Push the substring of A after the index.
}%
(                      Shift the first element of the resulting array.
!                      Compute the logical NOT. This pushes 1 if and only if the
                       array's first element is an empty string, which is true
                       if and only if the input string started with a D.
B)                     Push the last value of B and increment. If the last match
                       was successful and, therefore, all matches were successful,
                       B != -1, so B + 1 != 0.
*                      Compute the product of the two topmost items on the stack.
\                      Swap the resulting Booleanr with the array of substrings.
N*                     Join the array, separating by linefeeds.
@                      Rotate the input string on top of the stack.
?                      Select the joined array if the Boolean is 1 and the input
                       string otherwise.
Dennis
sumber
14
Mengapa saya menemukan diri saya banyak jawaban Anda? Oh ya, karena mereka gila.
Primo
Apa yang dilakukan untuk memasukkan yang berisi kata-kata SANGAT marah dalam SEMUA CAPS?
Adam Davis
2
@AdamDavis: Ruang yang saling bertanda ke "C" dan "A" memastikan bahwa KATA tidak akan rusak oleh linefeeds.
Dennis
25

Perl - 60 byte

#!perl -p
$_=(join$/,$_=~('DIE\IN\A\GREASE\FIRE'=~s/./($&.*)/gr))||$_

Menghitung shebang sebagai satu.

Solusi ini menggunakan string paling dalam untuk membangun regex berikut:

(D.*)(I.*)(E.*)(\.*)(I.*)(N.*)(\.*)(A.*)(\.*)(G.*)(R.*)(E.*)(A.*)(S.*)(E.*)(\.*)(F.*)(I.*)(R.*)(E.*)

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

#!perl -pl
$s=$_}for(map$s!~s/.*?(?=$_)//?$\='':$&,'DIEI.NA.G.REASEF.IRE$'=~/./g){

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 -lopsi) tidak disetel, sehingga string yang dihasilkan tidak dimodifikasi.

primo
sumber
Bukankah shebang membutuhkan jalan absolut?
celtschk
mengapa titik-titik (DIEI.NA. ...?
edc65
@celtschk Mungkin, tergantung pada sistem Anda, dan bagaimana Anda bermaksud menjalankan skrip. Dipanggil sebagai ./script.pl, maka kemungkinan besar ya. Jika dipanggil sebagai perl script.pl, maka no.
Primo
1
@ edc65 .Setelah itu Iakan menyisipkan baris baru tambahan sebelumnya I (karena cocok lagi pada posisi yang sama). Mungkin agak kontra-intuitif.
Primo
2
@celtschk Switch pada shebang masih akan ditafsirkan. Anda dapat menguji ini dengan menambahkan -Mopsi 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 karena perl -pl script.pl- dalam bentuk saat ini, ia berjalan dengan adanya.
Primo
12

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

..(\;68=(>"IEIINAAGGREASEFFIRE"{1$.@?:^<n@^>}/](]^0<=

Versi komentar yang tidak dikosongkan

.       # (Save input)
.(\;    # Get first character
68=(>   # If 'D', work with input; else, work with one-character string
"IEIINAAGGREASEFFIRE"
{       # For each character
 1$.@   # (Duplicate message twice)
 ?:^    # Find first index of character
 <n     # Extract part before index and add a newline
 @^>    # Extract part including and after index as new "message"
}/      # (Close loop)
](]^0<= # If last line was successfully matched, select result; else, select input

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 "":nsuatu tempat di dekat akhir.

Runer112
sumber
1
Anda sepertinya tidak memeriksa apakah karakter tersebut adalah karakter pertama dari sebuah kata. Sebagai contoh. "FIFA" seharusnya hanya digunakan untuk F, bukan untuk "I" atau "A".
Dennis
@ Dennis Saya tidak melihat bagian dari spesifikasi yang mensyaratkan itu. Tetapi jika Anda memaksakan pembatasan itu pada diri Anda sendiri, mengangkat itu dari solusi Anda sepertinya akan memperkuat keunggulan golf-nya.
Runer112
1
Beginilah cara m.buettner dan saya menginterpretasikan pertanyaan (saya harus melihat lebih dekat jawaban yang lain), tetapi Anda benar, itu tidak mengatakan di mana pun bahwa kami tidak dapat melanggar kata-kata.
Dennis
7

Ruby - 140

a="DIEINAGREASEFIRE";n=[4,6,7,13];i=0;o='';s=ARGV[0]
s.chars.each{|c|
if c==a[i]
i+=1;o+="\n";o+="\n"if n-[i]!=n
end
o<<c
}
puts((i<16)?s:o)

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 iindeks 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]!=nadalah trik yang rapi untuk menyimpan karakter ketika memeriksa apakah indeks saat ini adalah salah satu yang membutuhkan jeda baris tambahan (dibandingkan dengan n.include? i). Juga menyimpan beberapa karakter dengan menggunakan {}s alih-alih do/endmeskipun 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.

KChaloux
sumber
7

Perl, 184 byte

Bukan skor spektakuler untuk Perl, tapi di sini ada solusi regex sederhana

$_=<>;s/^(D.*) (I.*) (E.*) (I.*) (N.*) (A.*) (G.*) (R.*) (E.*) (A.*) (S.*) (E.*) (F.*) (I.*) (R.*) E/$1\n$2\n$3\n\n$4\n$5\n\n$6\n\n$7\n$8\n$9\n$10\n$11\n$12\n\n$13\n$14\n$15\nE/;print;
Martin Ender
sumber
3
Tentunya mungkin untuk membangun regex dalam kode dan menghemat satu ton?
Peter Taylor
@ PeterTaylor tentu saja, tapi saya tidak punya waktu atau pengetahuan Perl untuk melakukan itu sekarang. Saya mungkin melihat hari ini.
Martin Ender
Meski begitu itu mengalahkan jawaban PERL saya, yang saya tidak akan repot memposting sekarang: p
Tal
Simpan 4 karakter: print($_)== print. Poin +1 untuk keterbacaan: Sangat mudah untuk melihat apa yang sedang terjadi yang tidak persis seperti solusi lain.
Ole Tange
Ini dianggap sederhana di Perl?
Lincoln Bergeson
6

JavaScript 116

Implementasi Javascript dari ide m-buettner

console.log((RegExp('^('+[...'DIE IN A GREASE FIRE$'].join('.*)(')+')').exec(z=prompt())||[,z]).slice(1).join('\n'))

Cuplikan tes

z="Dear Boss, how are things? It has come to my attention that I received all the blame for the mishap last Friday. Not just the majority of it. Every last bit of it. Is it wrong for me to think that the rest of the team were at least in part responsible? After all, all six of us were involved from the get-go. Not that I think I should stand without blame. Not at all. All I'm saying is this: I do my best. I try hard. I improve constantly. And I am constantly taking responsibility. Generally speaking, I am very okay with taking full responsibility for my actions. But after this spring, it seems I get more than I deserve. Remember the Flakenhauser contract? Everything went down just about as smooth as one could have hoped. Or so it seemed at first. It was just at the very last minute that things fell apart. All of the team agreed that it was more akin to a freak accident than sloppy planning or mismanaged resources. Still, I - alone - took blame for it. Even though I said nothing then, my tolerance level for taking the blame took a serious dent then. From that point on, I have felt it necessary to always try twice as hard, just to escape scrutiny. And still, here we are again. In spite of all my accomplishments. Right where we always seem to end up these days. Every single project. It's becoming unbearable.";

T1.textContent = (RegExp('^('+[...'DIE IN A GREASE FIRE$'].join('.*)(')+')').exec(z)|| [,z]).slice(1).join('\n')

z='From that FIFA point on'
T2.textContent = (RegExp('^('+[...'DIE IN A GREASE FIRE$'].join('.*)(')+')').exec(z)|| [,z]).slice(1).join('\n')
pre { border: 1px solid black }
T1<pre id=T1></pre>
T2 (the FIFA test)<pre id=T2></pre>

edc65
sumber
JavaScript itu.
Peter Mortensen
Ini gagal pada FIFAtes (komentar OP)
Mwr247
@ Mwr247 sulit dimengerti: tes FIFA apa yang Anda coba?
edc65
Coba string uji dengan mengedit berikut: From that FIFA point on. Ini menempatkan baris baru sebelum FA, dan sebelum spasi sebelumnya FI.
Mwr247
@ Mwr247 bukan untuk saya. Diuji dengan Firefox, saya mendapatkan baris yang persis sama, tidak ada baris baru di dalamnya
edc65
4

Python3 ( 166 138)

Golf:

s='';o=input()
for n in o.split():s+=[n,'\n'+n.title()][n[0]==("DIEINAGREASEFIRE"*len(o))[s.count('\n')]]+' '
print([o,s][s.count('\n')==16])

Isgolfed-ish:

format_s = ''
unformat_s = input()
for n in unformat_s.split():
    format_s += [n, '\n' + n.title()][n[0] == ("DIEINAGREASEFIRE"*len(unformat_s))[format_s.count('\n')]] + ' '
print([unformat_s, format_s][format_s.count('\n') == 16])

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 countbuiltin, dan pernyataan perpecahan yang disingkat.

idiot.py
sumber
1

Python3 (165)

def c(m,h,l=[]):
 if h:s=m.rindex(h[0]);l=[m[s:]]+l;return c(m[:s],h[1:],l)
 return[m]+l
i=input()
try:print('\n'.join(c(i,"ERIF ESAERG A NI EID")))
except:print(i)

Tidak disatukan

def headings_remaining(headings): return len(headings) > 0
def head(s): return s[0]
def tail(s): return s[1:]
def prepend(l,e): l.insert(0, e)
def reverse(s): return s[::-1]

def chunk(message,headings,output_list=[]):
    if headings_remaining(headings):
        split_index = message.rindex(head(headings))
        message_init = message[:split_index]
        message_last = message[split_index:]

        prepend(output_list, message_last)
        return chunk(message_init, tail(headings), output_list)
    else:
        prepend(output_list, message)
        return output_list

input_message=input()
try:
    headings=reverse("DIE IN A GREASE FIRE")
    print('\n'.join(chunk(input_message,headings)))
except ValueError: # Couldn't keep splitting chunks because didn't find heading
    print(input_message)

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.

Steven Liao
sumber
1

Ruby 115

n,a,c,i=[4,6,7,13],gets,'',0;a.chars{|x|x=='DIEINAGREASEFIRE'[i]?(i+=1;c+="\n"if n-[i]!=n;c+="\n#{x}"):c+=x};puts c

Ruby 95

a,c,i=gets,"",0;a.chars{|x|x=="DIEINAGREASEFIRE"[i]?(i+=1;c+="\n#{x}"):(c+=x)};puts c
bjhaid
sumber
1

J - 110 103 byte

Mengapa 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.

f=:[:>,&.>/@('IEIINAAGGREASEFFIRE'&t=:(}.@[t{.@[(}:@],(((0{I.@E.)({.;LF;}.)])>@{:))])`]@.(0=#@[))@< ::]

Penjelasan:

Saya akan menunjukkan penggunaan fungsi sebagai [<left argument>] <function name> <right argument>, misalnya f <text>. Saya juga tidak akan menjelaskan setiap detail karena fungsinya cukup panjang.

@ menerapkan fungsi kanan ke fungsi kiri, mis. f@g x == f(g(x))

t=:(}.@[t{.@[(}:@],(((0{I.@E.)({.;LF;}.)])>@{:))])']@.(0=#@[)adalah fungsi rekursif <delimiters> t <boxed string>yang membagi string dengan setiap pembatas, secara berurutan. Gagal jika beberapa pembatas tidak ditemukan.

(((0{I.@E.)({.;LF;}.)])>@{:) memisahkan string dari sisi kiri pembatas, menambahkan linefeed di antara mereka.

>@{: mendapat string terakhir dari daftar (yang belum terpecah)

0{I.@E. membuat indeks terpecah, gagal jika pembatas tidak ada.

{.;LF;}. menyatukan sisi kiri dari split, linefeed dan sisi kanan dari split

}:@], menggabungkan hasil dari pemisahan sebelumnya dan hasil dari fungsi terakhir (makna terakhir: lihat ke atas)

']@.(0=#@[)memeriksa apakah ada pembatas yang tersisa, dan memanggil fungsi yang dijelaskan di atas (5 baris) jika ada. Kalau tidak kembali.

'IEIINAAGGREASEFFIRE'&set argumen kiri tke string itu

[:>,&.>/@ bergabung dengan hasil pemisahan

::] jika sesuatu gagal (saya membuat pencarian untuk indeks split titik lemah), kembalikan string asli.

Contoh (terlalu lama?):

   f 'Dear Boss, how are things? It has come to my attention that I received all the blame for the mishap last Friday. Not just the majority of it. Every last bit of it. Is it wrong for me to think that the rest of the team were at least in part responsible? After all, all six of us were involved from the get-go. Not that I think I should stand without blame. Not at all. All I''m saying is this: I do my best. I try hard. I improve constantly. And I am constantly taking responsibility. Generally speaking, I am very okay with taking full responsibility for my actions. But after this spring, it seems I get more than I deserve. Remember the Flakenhauser contract? Everything went down just about as smooth as one could have hoped. Or so it seemed at first. It was just at the very last minute that things fell apart. All of the team agreed that it was more akin to a freak accident than sloppy planning or mismanaged resources. Still, I - alone - took blame for it. Even though I said nothing then, my tolerance lev...
Dear Boss, how are things? 
It has come to my attention that I received all the blame for the mishap last Friday. Not just the majority of it. 
Every last bit of it. 

Is it wrong for me to think that the rest of the team were at least in part responsible? After all, all six of us were involved from the get-go. 
Not that I think I should stand without blame. Not at all. 

All I'm saying is this: I do my best. I try hard. I improve constantly. And I am constantly taking responsibility. 

Generally speaking, I am very okay with taking full responsibility for my actions. But after this spring, it seems I get more than I deserve. 
Remember the Flakenhauser contract? 
Everything went down just about as smooth as one could have hoped. Or so it seemed at first. It was just at the very last minute that things fell apart. 
All of the team agreed that it was more akin to a freak accident than sloppy planning or mismanaged resources. 
Still, I - alone - took blame for it. 
Even though I said nothing then, my tolerance level for taking the blame took a serious dent then. 

From that point on, 
I have felt it necessary to always try twice as hard, just to escape scrutiny. And still, here we are again. In spite of all my accomplishments. 
Right where we always seem to end up these days. 
Every single project. It's becoming unbearable.
   f 'Die in a grease fire. It''s fun. Every time.'
Die in a grease fire. It's fun. Every time.
   f 'hai'
hai
seequ
sumber
1

JavaScript (ES6), 93 115 byte

alert(prompt(x=[...'DIEI1NA1G1REASEF1IRE',i=0]).replace(/\b./g,a=>i<20&&a.match(x[i])?(+x[++i]?i++&&`

`:`
`)+a:a))

Saya biasa replacemenelusuri string, dengan kecocokan untuk /\b./ghanya 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 bertambah i.

EDIT: Kehilangan kebutuhan untuk membuat baris baru di antara kata-kata. Saya sudah melakukan itu sekarang, yang membawanya ke 115.

Mwr247
sumber
1

PHP, 328 byte

Diberikan file bernama 'G' yang berisi teks mentah ke "enmessage"

<?php
$a=implode(file("G"));$b=str_split('DIEINAGREASEFIRE');foreach(array_unique($b) as $c){foreach(str_split($a) as $h=>$d){if($c==$d)$l[$c][]=$h;}}$e=-1;$n=$a;foreach($b as $f=>$c){foreach($l as $j=>$m){if($c==$j){foreach($m as $k=>$h){if($h>$e){$n=substr($n,0,$h)."\n".$c.substr($a,$h+1);$e=$h+2;break 2;}}}}}echo nl2br($n);

Penjelasan (~ kode ungolfed && yang dikomentari):

<?php
$string=implode(file("G"));          // raw text to deal with
$msg=str_split('DIEINAGREASEFIRE');  // hidden message (make it an array)

 // 2D array : [letters of the message][corresponding positions in txt]
foreach(array_unique($msg) as $letter) {
    foreach (str_split($string) as $pos=>$let) {
        if ($letter==$let) $l[$letter][]=$pos; //1 array per seeked letter with its positions in the string
    }
}

$currentPos=-1;
$newString=$string;
foreach ($msg as $key=>$letter) { // deal with each letter of the desired message to pass
    foreach($l as $cap=>$arrPos) {// search in letters list with their positions
        if($letter==$cap) {       // array of the current parsed letter of the message
            foreach($arrPos as $kk=>$pos) { // see every position
                if ($pos>$currentPos) {     // ok, use the letter at that position
                    $newString=substr($newString,0,$pos)."\n".$letter.substr($string,$pos+1); // add line break
                    $currentPos=$pos+2; // take new characters into account (\n)
                    break 2;            // parse next letter of the message
                }
            }
        }
    }
}                    /* (note that I could have added some other (random) line breaks management, so that
                      * the message is not TOO obvious... !*/
echo nl2br($newString);
St3an
sumber
1

PHP, 136 byte

for($f=" ".join(file(F));$c=DIEINAGREASEFIRE[$i++];){while(($p=strpos($f,$c,$p))&&$f[$p-1]>" ");$p?$f[$p-1]="\n":$i=20;}echo$i<20?$f:"";

jika seluruh penghinaan bisa dimasukkan; mencetak string yang dimodifikasi dengan spasi atau linebreak terkemuka; output kosong jika tidak. Jalankan dengan -r.

kerusakan

for($f=" ".join(file(F));       // read input from file "F"
    $c=DIEINAGREASEFIRE[$i++];) // loop through insult characters:
{
    while(($p=strpos($f,$c,$p))     // find next position of $c
        &&$f[$p-1]>" ");            // ... preceded by a space
    $p?$f[$p-1]="\n"                // if found, replace the space with a newline
    :$i=20;                         // else break the loop
}
echo$i<20?$f                // if modified text has the full insult, print it
    :"";                    // else print nothing
Titus
sumber
0

Python - 190 Bytes

l,r="IExINxAxGREASExFIRE","\n";k=p=raw_input();y=i=0
for c in l:
    if c!="x":
        h=len(p);x=p[y:h].find(c)
        if x==-1:i+=1
        p=p[0:x+y-1]+r+p[x+y:h];y=x+y;r="\n"
    else:r=r+r
if i!=0:p=k

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:

letters,return="IExINxAxGREASExFIRE","\n"
input1=input2=raw_input()
lastpos=sanity=0

for char in letters:
    if char != "x":
        inputlength=len(input1)
        charposition=input1[lastpos:inputlength].find(char)
        if charposition==-1:
            sanity+=1
        input1=input1[0:position+lastpos-1]+return+input1[position+lastpos:inputlength]
        lastpos=position+lastpos
        return="\n"
    else:return=return+return
if sanity!=0:
    input1=input2

Saya sangat menghargai tanggapan Anda! Saya ingin belajar.

0xhughes
sumber
Saya menawarkan edit dengan beberapa trik di dalamnya. Tanyakan kepada saya apakah ada di antara mereka yang membutuhkan penjelasan. Perhatikan bahwa itu bisa golf lebih lanjut, banyak, tetapi saya akan menyerahkannya kepada Anda. :)
seequ
@ Theare Terima kasih! Saya sangat suka baris "i = + x <0" yang Anda tawarkan di suntingan Anda, sebagai lawan dari baris saya "jika x == - 1: i + = 1". Hanya untuk memastikan saya membacanya dengan benar, ini adalah salah satu hal ternary yang saya baca tadi malam, kan? Pada dasarnya berbunyi, "jika x kurang dari 0 (-1 dikembalikan ketika tidak dapat menemukan char): tambahkan x ke i" Benar? Jadi itu masih memuaskan cek kewarasan dengan -1 atau kurang untuk nilai, kan? Ingin memastikan saya membacanya dengan benar, karena itu adalah penghemat ruang yang hebat!
0xhughes
Sebenarnya itu menambah x<0ke i. 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+
seequ
Coba apa yang True == 1memberi. :)
seequ