Sözlü bir kaynaktan ses girdisini alan, sözcük olarak ayrıştıran ve bir ekrana yazan bir dikte alma uygulaması için bir kod yazmanız için işe alındınız.
Yönetim, projeye bu kadar güç kattığında size gerçekten güvenmiyor - maalesef, işinizi yapmak yerine bütün gün oturup golf kodunu biliyorsunuz - bu yüzden size gerçekleştirmeniz için gerçekten basit bir görev veriyorlar: Noktalanmış noktalama işareti, 'uygun şekilde biçimlendirilmiş' aşağıda tanımlandığı şekilde düzgün biçimlendirilmiş bir cümle ile cümle.
Cümle girdi dizesidir. Bir Word, koşulsuz boşluklu karakterler grubudur. Noktalama işaretleri, ilk karakteri olan bir Word'dür
^.Sözcüğün ilk harfi küçük harf değilse (büyük harfle yazılmış kelimeler normal ifadeyle eşleşirse
/[^a-z].*/) büyük harf kullanılır .Cümlenin ilk Sözü büyük yazılmalıdır.
A
^COMMAvirgül karakteridir,ve arkasından gelen ancak önünde olmayan bir boşluğa sahiptir.aaa ^COMMA bbboluraaa, bbb.A
^COLON, virgül gibi görünüyor:.A
^SEMICOLON, virgül gibi görünüyor;.A
^PERIOD, virgül gibi görünüyor.. A kelimesinin^PERIODbaş harfleri büyük olmalıdır.A
^BANG, benzeyen bir dönemdir!.A
^DASH, çizgi karakteridir-ve hem önceki hem de sonraki bir boşluğa sahiptir.A
^HYPHENaynı zamanda çizgi karakteridir,-ancak takip eden veya öncesinde boşluk yoktur.bir
^EMDASH, hecelenmiş bir kısa çizgi (tire değil!)--.Bir
^OPENQUOTE,"önünde boşluk bulunan ancak takip etmeyen bir tırnak karakteri . A kelimesini^OPENQUOTEbüyük harfle yazmanız gerekir.^OPENQUOTEA'nın başına Noktalama işareti olmayan bir Word gelirse ,^COMMAbu kelime ile^OPENQUOTE. Eğer bir^OPENQUOTEharfle sonraki kelimeyi, üzerinden bu atlama yapan bir Noktalamasız öncesinde^OPENQUOTEsonraki kelimeye.A
^CLOSEQUOTE,,"takip eden bir boşluk olan ancak daha önce olmayan bir digrafidir. Bir Eğer^CLOSEQUOTEbir öncesinde^COMMA,^PERIODya da^BANG, Noktalama kaybolur ve o^CLOSEQUOTEyazıldığından,",."ya!"sırasıyla. Kaybolan Noktalama İşaretleri büyük / küçük harf belirttiyse, bu büyük / küçük harf halen kullanılabilir olan bir sonraki kelime üzerinde gerçekleşmelidir.Tam nihai sonuçtaki ilk veya sondaki boşluklar kaldırılmalı ve bir satırdaki iki veya daha fazla boşluktan oluşan dizelerin tümü tek bir boşluk karakterine daraltılmalıdır.
Yukarıda ele alınmayan herhangi bir dava (ör.
^COMMA ^COMMAVeya^SEMICOLON ^CLOSEQUOTEveya^UNDEFINEDPUNCTUATION) iyi biçimlendirilmiş girdilerde meydana gelmeyecektir ve bu nedenle tanımlanmamış bir davranıştır.
Geliştirme ekibi sizi aşağıdakiler hakkında bilgilendirir:
Proje [burada diliniz] dilinde yazılmaktadır ve Android / iPhone için bir uygulama olduğunda mümkün olduğunca az yer kaplaması için mümkün olduğunca kısa olmalıdır. Uygulama geliştirmenin böyle çalışmadığını açıklamaya çalışıyorsunuz ama dinlemiyorlar. Ama hey, ne tesadüf! [Burada kendi dilinizde] inanılmaz bir golfçüsünüz !
Uygulamanın herhangi bir web erişim izni olmayacak ve sizin için bu biçimlendirmeyi yapan herhangi bir kitaplık yüklenmeyecek. Ekibinizi, diliniz için varsa regex kütüphanesine izin vermeye ikna edebilirsiniz, ancak buna ihtiyacınız olduğunu düşünüyorsanız.
Çift / tek tırnak kullanan düzgün iç içe alıntılar için destek, uygulamanın sonraki bir sürümü için planlanmıştır, ancak şu anda üzerinde çalıştığınız sürüm için planlanmadığından endişelenmeyin.
Yönetim, test odaklı geliştirmenin büyük bir hayranıdır ve bu nedenle geliştirici ekibinin, programınızın bir kısmı için bazı testler yazmak için zaten şanssız bir klavye maymunu vardı: (okunabilirlik için eklenen yeni satırlar, boşluk olarak davranın)
Giriş:
hello ^COMMA world ^BANGÇıktı:
Hello, world!Giriş:
once upon a time ^COMMA there was a horse ^PERIOD that horse cost me $50 ^PERIOD ^OPENQUOTE eat your stupid oats ^COMMA already ^BANG ^CLOSEQUOTE I told the horse ^PERIOD the horse neighed back ^OPENQUOTE no ^CLOSEQUOTE and died ^PERIOD THE ENDÇıktı:
Once upon a time, there was a horse. That horse cost me $50. "Eat your stupid oats, already!" I told the horse. The horse neighed back, "No," and died. THE ENDGiriş:
begin a ^PERIOD b ^COMMA c ^COLON d ^SEMICOLON e ^BANG f ^HYPHEN g ^DASH h ^EMDASH i ^OPENQUOTE j ^PERIOD ^OPENQUOTE k ^SEMICOLON ^OPENQUOTE l ^CLOSEQUOTE m ^BANG ^CLOSEQUOTE n ^PERIOD 0x6C6F6C endÇıktı:
Begin a. B, c: d; e! F-g - h--i, "j. "K; "l," m!" N. 0x6C6F6C end
Bu bir kod golf: en düşük puan kazanır. Bir dize bağımsız değişkeninin bir işlevini veya STDIN'den okuyarak STDOUT'a yazarak bir program yazabilirsiniz.
prompt()?