Quando cerchi qualcosa su Google , viene visualizzato un messaggio nella parte superiore della pagina che dice qualcosa di simile About 53,000,000 results (0.22 seconds). (I numeri cambiano a seconda di ciò che è stato cercato ovviamente.)
In questa sfida dovrai scrivere un programma che disegna un grafico ASCII logaritmico del numero di risultati forniti da Google quando vengono cercati tutti i prefissi non vuoti di una determinata frase di ricerca.
Una frase di ricerca è definita come una o più stringhe di caratteri alfanumerici minuscoli, separati da uno spazio l'uno dall'altro. In Regex una frase di ricerca è (?:[a-z0-9]+ )*[a-z0-9]+.
Quindi im ok, re 1a 2sono tutti ricerca frasi, ma I'm OK, R, 1a 2, e , non lo sono.
(Le restrizioni sui caratteri sono in atto perché Google raramente tiene conto di maiuscole o simboli speciali. Anche la fuga di caratteri non alfanumerici negli URL è una seccatura.)
Spec
Il programma deve contenere una frase di ricerca e un numero in virgola mobile positivo H dalla riga di comando o da stdin. (Puoi presumere che siano validi e va bene se hai bisogno di virgolette o qualcosa intorno alla frase di ricerca.)
Ad esempio, supponiamo che la frase di ricerca sia a care H = 0,75.
Passaggio 1:
raccogli i prefissi non vuoti della frase di ricerca e inseriscili tra virgolette . Le virgolette assicurano che verrà cercata la frase esatta, evitando qualsiasi reindirizzamento "intendevi ..." .
Escludere tutti i prefissi che terminano in uno spazio come a[space].
Prefixes
"a"
"a c"
"a ca"
"a car"
Passaggio 2:
cerca ciascuno di questi termini esattamente come appaiono utilizzando https://www.google.com e annota il numero di risultati restituiti.
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
Se il termine di ricerca non corrisponde ad alcun documento , inserire uno 0 nella Resultscolonna.
Passaggio 3:
calcolare y = floor(H * log10(r + 1))per ogni riga, dove r è il Resultsvalore. H è ancora 0,75 qui.
Search Term Results y
"a" 6950000000 7
"a c" 861000000 6
"a ca" 2990000 4
"a car" 53900000 5
Passaggio 4:
disporre il ynumero di barre verticali ( |) sopra l'ultimo carattere di ciascun termine di ricerca non quotato, utilizzando gli spazi per riempire le aree vuote, in una sorta di grafico a barre.
|
| |
| | |
| |||
| |||
| |||
| |||
a car
Questo grafico è il risultato finale del tuo programma e l'unica cosa che deve produrre. Dovrebbe andare a stdout.
punteggio
Questo è code-golf , quindi vince il programma più breve in byte .
Appunti
- Puoi utilizzare abbreviazioni di URL o altri strumenti di ricerca / API purché i risultati siano gli stessi della ricerca https://www.google.com .
- So che le doppie virgolette non sono un modo infallibile per escludere i reindirizzamenti "intendevi ...". L'aggiunta
&nfpr=1all'URL non sempre funziona neanche . Non preoccuparti per queste inesattezze. Cerca ilAbout X results...messaggio indipendentemente da ciò che viene visualizzato o impostaResultssu 0 se non ce n'è. - C'è una colonna vuota sopra qualsiasi spazio nella frase di ricerca nel grafico.
- Il grafico non dovrebbe essere più largo o più alto del necessario (ad es. Con spazi bianchi).
- Va bene se il tuo programma ha effetti collaterali come l'apertura di un browser web in modo che le criptiche pagine html / js di Google possano essere lette mentre vengono visualizzate.