Flying memes

L’interessante spunto del Golf Programming

Stavo navigando tra i miei feed RSS quando ho trovato questo interessantissimo articolo, ovviamente non ho resistito all’idea di cercare di sviluppare una soluzione usando Ruby ed il minor numero di linee di codice possibile:


puts (ARGV[0]||"1").scan(/(#{('0+'..'9+').to_a.join('|')})/).collect{|e| [e[0].size,e[0][0..0]]}.to_s

Mi sento sufficentemente soddisfatto dal mio codice di 100 caratteri, soprattutto ho trovato molto potente l’utilizzo del metodo scan per isolare gruppi di cifre consequenziali:


"1112211134".scan(/(0+|1+|2+|3+|4+|5+|6+|7+|8+|9+)/)
=> [["111"], ["22"], ["111"], ["3"], ["4"]]

e l’utilizzo dei range per accorciare la stesura di questa espressione regolare:


('0+'..'9+').to_a
=> ["0+", "1+", "2+", "3+", "4+", "5+", "6+", "7+", "8+", "9+"]

Concludo con un aprezzamento verso l’autore del blog Experimentalia che ha saputo inventarsi una sfida di programmazione divertente ed impegnativa.

Tags: