Programlarınız:
İki program yazacaksınız (ikisi de aynı dilde). Depolama programı bir dizgiyi STDIN'den alır ve kalıcı bir yerde saklar (aşağıya bakınız) ve sonra hatasız biçimde çıkar. Alma programı giriş yapmaz, kaydedilen dizeyi alır ve STDOUT'a yazdırır.
Kalıcılığın nesnel testi:
Depolama programını yerel makinenizde çalıştırabilmeli, daha sonra yerel makinenizi kapatıp ardından yerel makinenizden alma programını aramalısınız. Bu yeniden başlatma testini geçtiğiniz sürece dizeyi istediğiniz şekilde (hatta web'de) saklayabilirsiniz.
Test Durumları:
Depolama sonra almak:
echo foo | Store
Retrieve
foo
Tekrarlanan Mağazalar üzerine yazılmalıdır (bir set () yöntemi gibi):
echo foo | Store
echo bar | Store
Retrieve
bar
Tekrarlanan Alma tahribatsızdır (bir get () yöntemi gibi):
echo foo | Store
Retrieve
foo
Retrieve
foo
Depolama herhangi bir çağrısından önce alma:
Bunun için endişelenmene gerek yok. Alma programınız, depolama programının geçmişte bir noktada çalıştırıldığını varsayabilir.
Giriş / Çıkış esnekliği.
İnsanlar benden katı STDIN / STDOUT'dan standart IO kurallarına genişletmemi istediler. Yapamam çünkü çok fazla boşluk gösterecek. Bazı standart G / Ç seçenekleri, sürekli bir şekilde saklanmış girişe sahiptir, örneğin "programlar bir dosyadan giriş alabilir". Sadece katı STDIN ve STDOUT'dan daha esnek olmak istiyorum, ancak taşkın kapılarını açmadan.
Standart GÇ kuralları başlığından, zoru çözmeyenleri kiraz toplayacağım:
İsterseniz Programlar, GUI istemleri ve komut satırı istemleri aracılığıyla giriş alabilir
Programlar ekranda görüntüleyerek çıktısını alabilir. GUI iletişim kutularını içerir
Programlar komut satırı argümanları üzerinden girdi alabilir
Programlar STDERR'ye çıktı verebilir, ancak yine de hatalar atamaz.
Alternatif kullanıyorsanız, kullanıcı etkileşimli olması gerekir. Kullanıcının, girişlerini programınıza aktarma, programınızın sağladığı bir bilgi istemine yazma veya programın komut satırı bağımsız değişkeni olarak girme dışında başka bir iş yapması gerekmemelidir. Kullanıcının ekranda görüntülenen veya STDOUT veya STDERR'ye gönderilen çıktısını görmek için alma programınızı çalıştırmaktan başka bir şey yapması gerekmemelidir.
İzin verilen varsayımlar:
- İki programınız aynı dizinde çalıştırılacak
- Programlarınızın bu dizin için okuma-yazma izinleri var.
- Yarattığınız dosyalar yeniden başlatmaya devam eder (geçici bir dizinde değil)
- Dizenin parçası olmayan bir son satırın girilmesine izin verilir. Başka iz bırakmayan boşluk yok
Bu kod golf ve puanınız her iki programdaki baytların toplamıdır.
Store
?
echo $@>x
vecat x
geçerli mi?