Google'da bir şey aradığınızda , sayfanın üst kısmına yakın bir şeye benzer bir mesaj verir About 53,000,000 results (0.22 seconds)
. (Sayılar, elbette aranana bağlı olarak değişir.)
Bu meydan okumada , belirli bir arama ifadesinin tüm boş olmayan önekleri arandığında Google tarafından verilen sonuçların logaritmik ASCII grafiğini çizen bir program yazacaksınız .
Bir ara-ifade birbirinden bir boşluk ile ayrılmış küçük alfanümerik karakterden oluşan bir ya da birden fazla ipliklerin, olarak tanımlanır. Regex'te bir arama ifadesi (?:[a-z0-9]+ )*[a-z0-9]+
.
Yani im ok
, r
ve 1a 2
tüm arama-ibareleri vardır, ama I'm OK
, R
, 1a 2
, ve , değildir.
(Google, nadiren büyük / küçük harf veya özel sembolleri dikkate aldığı için karakter kısıtlamaları mevcuttur. URL'lerde alfasayısal olmayan karakterlerden kaçmak da bir güçlüktür.)
spec
Programınız bir arama ifadesini ve stdin'den veya komut satırından pozitif bir kayan nokta sayısı H almalıdır. (Geçerli olduklarını varsayabilir ve arama ifadesinin etrafında tırnak işaretleri veya başka bir şeye ihtiyacınız varsa sorun yoktur.)
Çalışan bir örnek olarak, arama ifadesinin a car
H = 0.75 olduğunu varsayalım .
Adım 1:
Arama ifadenizin boş olmayan öneklerini toplayın ve çift tırnak içine alın . Tırnak işaretleri, "demek istediniz ..." yönlendirmelerinden kaçınarak, tam kelime öbeğinin aranmasını sağlar .
Gibi bir alanda biten tüm önekleri hariç tutun a[space]
.
Prefixes
"a"
"a c"
"a ca"
"a car"
2. Adım: https://www.google.com adresini
kullanarak bu terimlerin her birini tam olarak göründükleri şekilde arayın ve döndürülen sonuçların sayısını not edin.
Search Term Message Results
"a" About 6,950,000,000 results (0.27 seconds) 6950000000
"a c" About 861,000,000 results (0.27 seconds) 861000000
"a ca" About 2,990,000 results (0.30 seconds) 2990000
"a car" About 53,900,000 results (0.39 seconds) 53900000
Arama terimi herhangi bir dokümanla eşleşmediyseResults
sütuna 0 koyun .
Adım 3: Her satır için
hesaplayın y = floor(H * log10(r + 1))
, burada r Results
değerdir. H burada hala 0.75.
Search Term Results y
"a" 6950000000 7
"a c" 861000000 6
"a ca" 2990000 4
"a car" 53900000 5
Adım 4: Boş alanları doldurmak için boşluklar kullanarak bir tür çubuk grafikte, alıntılanmamış her arama teriminin son karakterinin üzerinde dikey çubuk ( ) sayısını
düzenleyin .y
|
|
| |
| | |
| |||
| |||
| |||
| |||
a car
Bu grafik, programınızın nihai sonucudur ve çıktısının alınması gereken tek şeydir. Stdout'a gitmeli.
puanlama
Bu kod golf, bayt cinsinden en kısa program kazanır.
notlar
- Sonuçlar https://www.google.com arama ile aynı olduğu sürece URL kısaltıcılarını veya diğer arama araçlarını / API'lerini kullanabilirsiniz .
- Çift tırnakların "demek istediniz ..." yönlendirmelerini hariç tutmanın kesin bir yolu olmadığını biliyorum .
&nfpr=1
URL'ye eklemek her zaman işe yaramaz . Bu yanlışlıklar için endişelenme.About X results...
Ne olursa olsun mesajı arayın ya daResults
yoksa 0'a ayarlayın . - Grafikteki arama ifadesinde herhangi bir boşluğun üstünde boş bir sütun var.
- Grafik olması gerekenden daha geniş veya daha uzun olmamalıdır (örneğin boşlukla).
- Programınızın bir web tarayıcısı açmak gibi yan etkileri varsa sorun olmaz, böylece şifreli Google html / js sayfaları oluşturuldukça okunabilir.