Posts tagged: C

Facebook puzzles, le mie soluzioni

Periodicamente cercherò, nel tempo libero, di risolvere alcuni dei puzzle “più facili” che si possono trovare in questa pagina: http://www.facebook.com/careers/puzzles.php. Sono dei simpatici modi di esercitarsi a programmare, e nel caso risolviate in modo giusto ed efficiente alcuni di quelli più difficili – c’è il rischio di venire contattati da Facebook per un posto di lavoro (mica male eh?).

I primi di cui invio la soluzione sono banali – quelli di prova. Di seguito la mia proposta di soluzione al problema che si chiama “Hoppity Hop!” (in Java)

package facebookpuzzles;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
 
/**
 * @author Qualsiasi
 */
public class HoppityHop {
private String f_name;
private Integer numero;
private int i;
 
    HoppityHop(String filename) {
    f_name = filename;
    }
 
    public void run() throws FileNotFoundException {
    File in = new File(f_name);
    Scanner scan = new Scanner(in);
    numero = scan.nextInt();
 
    for (i=1;i < = numero;i++) {
    if ( (i%3 == 0) && (i%5 != 0)) {System.out.printf("Hoppity\n");}
    if ( (i%3 != 0) && (i%5 == 0)) {System.out.printf("Hophop\n");}
    if ( (i%3 == 0) && (i%5 == 0)) {System.out.printf("Hop\n");}
 
     }
    }
}

Ovviamente l’oggetto va istanziato, il costruttore prevede il nome del file contenente il numero come parametro e poi si chiama il metodo “run()”.

E ora l’ancor più banale soluzione, in C, a Meep meep! – il secondo puzzle.

#include 
 
int main(int argc, char **argv) {
 
  /* non leggere argv[1] */
  printf("Meep meep!\n");
}

Alla prossima.

Anno 2004: Scrivevo codice che ora non capisco

Cavolo, la passione per la programmazione e lo scripting risale praticamente alla prima superiore, quando si usava il pascal a scuola. Turbo Pascal per la precisione. Un linguaggio da matematici. Adesso per lo più uso PHP e Bash, ma ovviamente sono passato per il periodo C, anzi, tutt’ora reputo il C potentissimo, ma lo uso solo quando ne ho strettamente bisogno.

Oggi, anzi, poco fa, ho riscoperto la mia cartella “projects” che ha sempre contenuto esperimenti vari più che veri progetti, e ho trovato il cuore pulsante di un MUD (si, ci giocavo. si, ho smesso). Riguardando il codice, che alla fine non fa altro che aprire una porta in ascolto, scrivere “Ciao” e stare in ascolto da tutti i client facendo un echo di quello che riceve, mi sono accorto che… tutto sommato non ero proprio un pischello, ma c’era molto copia-incolla nei miei programmi.

Ecco cosa mi ha colpito:

tmp_size = sizeof tmp_sockaddr;
if (getpeername(tmp_socket, (struct sockaddr *) &tmp_sockaddr, &tmp_size) < 0) printf(“[WARNING] Can’t perform getpeername().\n”);

Mah, è ipnotico. Lol.