Domanda

Voglio mettere in pratica le mie abilità lontano dalla tastiera (ad es.carta e penna) e cerco semplici domande pratiche come Fizz Buzz, Stampa i primi N numeri primi.

Quali sono le tue domande di programmazione semplici preferite?

È stato utile?

Soluzione

Ci sto lavorando http://projecteuler.net/

Altri suggerimenti

Problema:Inserisci il segno + o - in un punto qualsiasi tra le cifre 123456789 in modo che l'espressione valga 100.La condizione è che l'ordine delle cifre non deve essere modificato.

per esempio.:1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100

Problema di programmazione:Scrivi un programma nella tua lingua preferita che produca tutte le possibili soluzioni del problema di cui sopra.

Se desideri esercizi con carta e penna, ti consiglio più di progettare che di scrivere codice.

In realtà scrivere codice su carta fa schifo e non ti permette di imparare quasi nulla.L'ambiente di lavoro è importante, quindi digitare su un computer, compilare, vedere quali errori hai fatto, usare il refactor qua e là, semplicemente non è paragonabile a quello che puoi fare su un pezzo di carta e quindi, cosa puoi fare su un pezzo di carta, pur essendo un esercizio mentale interessante non è pratico, non migliorerà molto le tue capacità di programmazione.

D'altro canto, è possibile progettare manualmente in un documento l'architettura di un'applicazione media o anche complessa.In effetti, di solito lo faccio.Gli strumenti di ingegneria (come Enterprise Architect) non sono sufficienti per sostituire i buoni diagrammi manuali.

I buoni progetti potrebbero essere: come progetteresti un motore di gioco?Classi, thread, archiviazione, fisica, le strutture dati che manterranno tutto e così via.Come avvieresti un motore di ricerca?Come progetteresti un sistema di riconoscimento di pattern?

Trovo che questo tipo di problemi sia molto più gratificante di qualsiasi codifica cartacea che puoi fare.

Ci sono alcuni buoni esempi di domande di programmazione semplici nell'articolo di Steve Yegge Cinque domande essenziali sullo schermo del telefono (sotto l'Area Numero Uno:Codifica).Trovo che questi siano abbastanza buoni da fare su carta e penna.Inoltre, le domande sotto OOP Design nello stesso articolo possono essere fatte su carta e penna (o anche nella tua testa) e sono, penso, buoni esercizi da fare.

Molti siti online di programmazione competitiva sono pieni di domande/sfide di esempio, ordinate per "difficoltà".Molto spesso, penso che le categorie più semplici nelle domande sugli "algoritmi" siano adatte a te.

Ad esempio, controlla TopCoder (sezione algoritmi)!

A parte questo, 2 campioni:

  1. Ti viene fornito un elenco di N punti nel piano in base alle loro coordinate (x_i, y_i) e un numero R>0.Genera il numero massimo degli N punti dati che possono essere simultaneamente coperti da un disco di raggio R (per punti bonus:complessità?).

  2. Ti viene data una matrice di N numeri da a1 a aN e vuoi calcolare a1 * a2 * ... * aN / ai per tutti i valori di i (quindi l'output è ancora una volta un array di N elementi) senza usare la divisione.Fornire un metodo (non ingenuo) (la complessità dovrebbe essere nelle moltiplicazioni O(N)).

Mi piace anche il progetto Euler, ma vorrei sottolineare che le domande diventano davvero complicate molto velocemente.Dopo le prime 20 domande circa, iniziano a diventare problemi che la maggior parte delle persone non sarà in grado di risolvere in mezz'ora.Un altro problema è che molti di loro si occupano di matematica con numeri molto grandi, che non rientrano nei tipi interi standard o anche nelle variabili lunghe.

Torri di Hannoi è ottimo per esercitarsi sulla ricorsione.

Farei anche una ricerca su domande di intervista di programmazione di esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top