Patronunuz kısa süre önce İngilizce olarak adlandırılan bu ilginç programlama dilini öğrendi . Bu "devrimci" fikri vardı, üretim kodlarını iki katına çıkarmak için sizinle kod yazmak istiyor! Teknoloji meraklısı olmadığı için kod yazabilmesi için bir derleyici yazmanızı istiyor!
Şimdi, sen kötü bir tembel programcısın ve açıkçası bu gülünç derecede karmaşık dili derlemek için bir program yazmayacaksın. Bunun yerine, patronunuzun kodunda her zaman bir hata olduğundan emin olursunuz, böylece gerçek derlemeye asla ulaşmaz ve kodlama yerine dilbilgisi hatalarını düzeltmeye yapışır.
Zorluk terminalden çalıştırılabilen ve bir dosya yolunu argüman olarak kabul eden bir program yazmaktır. Programın yapması gerekenler:
- bir yazım hatası ekleyerek dosya girişini değiştirin.
- Tanıttığınız yazım hatasıyla karşılaştığınız için derleme başarısız gibi davranın.
- Programı aynı dosyanın kopyalarında çalıştırmak, aynı yazım hatasını arka arkaya iki kez tanıtmamalıdır.
Bu meydan okumayı göstermek için, programınızı bu dosyada çalıştırın:
Take an array as input.
Sort the array.
Output the array.
çizgisinde bir şey çıkarmalı
Error on line 1:
'Take an arqay as input.'
^
arqay is not a valid identifier.
ve programa derlemesini söylediğiniz dosya şimdi şöyle görünmelidir:
Take an arqay as input.
Sort the array.
Output the array.
Programın özellikleri hakkında daha fazla bilgi:
Programınızın, patronunuzun farklı bir rastgele karakter için girdiği programdaki herhangi bir karakteri değiştirmenin dilbilgisi hatasına neden olacağını varsayar. Programınız, patron kodunuzda hatalar oluşturmak için alfabetik olmayan karakterler kullanmamalıdır. Patronunuz asla bir sayı veya simge kullanmaz ve bir şeyin ayakta olduğunu öğrenir. Programınız sadece patronunuzun programındaki kelimelere hatalar getirmelidir. Cümlelerdeki boşlukları veya noktalama işaretlerini değiştirmeyin. Programınız, patronunuzun derlemeye çalıştığı programın durumunu değiştirmemelidir, yani hatalar arQaygeçersizdir. Bu engeller hatalar gibi takeyerine Takeya oluyor Arrayyerine array. Programınız önce hatanın hangi satırda olduğunu belirterek hatayı çıkarmalıdır:
Error on line <insert line number here>:
Ardından 'simgenin içindeki hatayı içeren satırı yazdırmalıdır . Bir sonraki satıra , hatanın ^olduğu sözcüğün altına bir sembol yerleştirmeli ve son olarak hatayı açıklayan bir metne sahip olmalıdır (bu bölüm size kalmış, bir hatayı açıkladığı sürece orada ne istediğinizi söyleyebilirsiniz).
Girdi dosyasının var olduğunu ve boş olmadığını varsayabilirsiniz. Ayrıca, eklemeden önce giriş dosyasının dilbilgisi hatası olmadığını varsayabilirsiniz.
Bonuslar:
Kodunuzun verdiği hatalar tamamen rasgele değilse, bu sorudaki gibi yazım hatası tabanlıysa -60 bayt .
En az 5 farklı hata mesajı için -60 bayt, rasgele dönüşümlü.
Programınız patronunuza bazı motivasyonel mesajlar göndermek için 100'den az şansa sahipse -60 bayt.
EDIT: Mesajların bayt sayısı puanınıza dahil değildir. (Bu iyi fikir için Martin Büttner'a teşekkürler)
Bu kod golf, en kısa bayt sayısı kazanır. Lütfen hata mesajı içeriğini golf etmeyin, patronunuz hata mesajlarını anlayamazsa mutlu olmayacak ve sizden bunları düzeltmenizi isteyecektir.