Claudio Cherubino's blog Life of a Googler

16Oct/083

Saluti dalle Hawaii!

Tranquilli, non sono rientrato in anticipo dal viaggio di nozze né sto passando la mia vacanza collegato ad Internet!

Più semplicemente ho programmato la pubblicazione di questo post per farvi pensare un po' a quanto le mie giornate con Laura saranno terribili in un posto che si presenta più o meno così:


La spiaggia di Waikiki

Honolulu

Tramonto alle Hawaii

Quanti nemici mi sono fatto??? :mrgreen:

8Oct/081

Project Euler in F# – Problem 36

A number (in general a word) is palindromic when it can be read in the same way from left to right and in the opposite direction, i.e. it is "symmetrical".

According to the definition, a number can be palindromic when written in base10 and not palindromic in base2, but there are some numbers that are palindromic in both bases.

In Project Euler Problem 36 we have to find all these numbers between 1 and 1 million:

The decimal number, 585 = 10010010012 (binary), is palindromic in both bases.

Find the sum of all numbers, less than one million, which are palindromic in base 10 and base 2.

(Please note that the palindromic number, in either base, may not include leading zeros.)

To solve this problem we need two helper functions, one to check whether a number is palindromic and another one to convert a number from base10 to base2:

#light
open Microsoft.FSharp.Math

let isPalindromic n =
  let chars = n.ToString().ToCharArray()
  chars = Array.rev chars

let toBinary (n : BigInt) =
  let rec toBinary1 a v =
    match v with
    | 0I -> a
    | _ ->
      let q,r = BigInt.DivMod (v,2I)
      toBinary1 (r.ToString()::a) q
  toBinary1 [] n |> List.reduce_left (^) |> BigInt.Parse

let euler36 = [1I .. 1000000I] |>
              List.filter isPalindromic |>
              List.filter (fun x -> x |> toBinary |> isPalindromic) |>
              List.reduce_left (+)

The first function checks if a number is palindromic by converting it into an array of digits and checking if this array is equal to its reverse one.

Then we have the toBinary function that is based itself on an inner function called (with a lot of originality) toBinary1.

This recursive function uses the list a to store the remainders of the repeated divisions by 2, until the original number is over.

These digits, converted as strings, are joined with ^, the string concatenation operator and eventually the result is converted to a BigInt.

To find the answer to the problem we start with the list of all numbers between 1 and 1 million and take (filter) only the elements which are palindromic in base10.

After this first step, we filter the list again, this time keeping only those numbers that are palindromic when converted to base2.

The last step is the easiest, we only need to sum the numbers left to get the answer to the problem.

7Oct/080

Fermiamo il Lodo Alfano

Normalmente in un paese democratico chiunque commetta un reato viene processato e, se ritenuto colpevole, condannato.

In Italia non è così, per lo meno se ti chiami Silvio Berlusconi.

Non tutti hanno la possibilità di insediare al Ministero della Giustizia una marionetta come Alfano e farsi fare le leggi su misura, diventando così degli intoccabili.

La legge non dovrebbe essere uguale per tutti?

Se anche voi come me credete ancora in questo ormai obsoleto principio, non vi resta che a firmare a favore del referendum contro il Lodo Alfano.

Si inizia Sabato prossimo, l'11 Ottobre, e si continuerà fino al 28, più o meno in tutte le città d'Italia secondo questo calendario.

Servono 500.000 firme per presentare la proposta alla Corte di Cassazione, diamoci da fare per passare la voce!

2Oct/080

Pro Evolution Soccer 2009 si presenta al pubblico

Correva l'anno 2002 quando decisi di comprare la Playstation 2 per giocare al capolavoro Pro Evolution Soccer 2 e da allora, anno dopo anno, ho acquistato le nuove versioni del videogioco calcistico per eccellenza.

L'unica edizione che mi sono fatto scappare è quella dell'anno scorso e, a quanto ho letto su Internet, non devo essermi perso granchè.

Di recente ho venduto la Playstation 2 dopo quasi 6 anni di onorato servizio e l'annuncio di Pro Evolution Soccer 2009 mi fa considerare la possibilità di acquistare una Playstation 3, con la classica scusa di usarla anche come lettore Blu Ray.

Proprio oggi è stata rilasciata la versione demo per PC di PES 2009 e dopo aver scaricato il leggerissimo setup da poco più di 1Gb, non ho perso tempo ad installarlo e a giocare un paio di partite.

Giocare con la tastiera fa veramente schifo, però sono riuscito lo stesso a ricavare le prime impressioni sul gioco e devo dire che mi ha fatto proprio venire voglia di giocarci ancora.

Volete provarlo anche voi? L'installer si può scaricare da GamersHell ed inoltre è disponibile un programmino che consente di modificare l'angolazione della camera e la durata del match.

Riuscirà anche quest'anno Pro Evolution Soccer a battere il rivale di sempre Fifa Soccer?