Zorluk : Windows'a özgü rasgele kod yürütmek foo.cmd
için vanilya Windows cmd.exe
isteminden (yönetici modunda değil PowerShell değil) çağrılabilen tek bir komut dosyası yazın ...
> .\foo.cmd
Hello Windows!
... ama aynı zamanda kabuk tipik bir POSIX uyumlu (Linux / OSX) dan değiştirilmeden çağrılabilir istemi ( bash
, tcsh
veya zsh
), keyfi POSIX özel kodu çalıştırmak için:
$ chmod a+x foo.cmd
$ ./foo.cmd
Hello POSIX!
... üçüncü taraf tercümanların / araçların kurulumunu veya oluşturulmasını gerektirmeden.
Bunun mümkün olduğunu biliyorum, ancak cruft (yani Windows'da, bir veya iki satır çöp / hata mesajı "Merhaba Windows!" Dan önce stderr veya stdout'a yazdırılır).
Kazanan kriter (ilk olarak) ham çizgi sayısının ve (ikinci) ham karakter sayısının en aza indirilmesidir.
Cruft, (keyfi) yük koduyla üretilmeyen herhangi bir konsol çıkışı (stdout veya stderr) olarak tanımlanabilir. Boş satırlar satır sayımında sayılır. Yeni satırlar karakter sayımında sayılmaz. Cruft skorları her iki platformda da toplanmalıdır. Bunun gibi mekanizmaları göz ardı edelim cls
, ancak önceki terminal çıktısını köreltme pahasına. Windows @echo off
henüz dönmediğiniz için komutlarınızı yansıtıyorsa , geçerli dizini ve istemi yazdırırken harcadığı karakterleri hariç tutalım.
İkincil bir kriter, içindeki çözümün basitliği / şıklığıdır foo.cmd
: "altyapı", keyfi yük kodunda doğrudan yer almayan herhangi bir karakter olarak tanımlanırsa, önce altyapı karakterlerini içeren satır sayısını ve ikinci olarak da toplam altyapı sayısını en aza indirin karakter.
POSIX kısmı CRLF satır sonlarına sahip dosyaya rağmen çalışacaksa ekstra kudos! (Son bölümün bile mümkün olduğundan emin değilim.)
Başkalarının bir şansı olduğunda buraya göndereceğim mevcut çözümüm 6 satırlık altyapı kodu kullanıyor (yeni satırlar hariç 52 karakter). İkisi boş olan ve tümü Windows'ta gerçekleşen 5 satır ham üretiyor (yeni satırlar hariç ve bu satırlardan ikisinde görünen geçerli dizin / bilgi istemi dizesi hariç 30 karakter).