Posts written by RootkitNeo

  1. .
    Un altro esempio che avevo scritto per qualcuno; utilizzo i puntatori e XOR per invertire una stringa:

    CODICE
    for(str1 = str, str2 = strlen(str)+str-1; str2>str1; ++str1, --str2) {
    *str1 ^= *str2;
    *str2 ^= *str1;
    *str1 ^= *str2;
    }
  2. .
    Ti rispondo così, su due piedi, in quanto non l'ho implementato...
    Una soluzione potrebbe essere creare una struttura dati; l'altra usare una stringa e poi estrarre i dati poco alla volta.

    Per quanto riguarda la soluzione, puoi anche leggere il mio spoiler. Ad ogni modo essendo un triangolo piccolo è risolvibile anche tramite forza bruta (provando tutte le combinazioni possibili quindi).
  3. .
    @Guglielmoqwerty: partire dall'alto in quel modo ti porta certamente ad un esito negativo, in quanto non sai se il numero che c'è dopo è più grande o più piccolo della somma che hai sino ad ora. Se non ricordo male un implementazione come la tua si chiama "algoritmo goloso" (greedy, in inglese), in quanto scegli appunto la soluzione più buona (ma non tieni conto dei numeri che vengono dopo).

    Io avrei una soluzione, ma non ho tempo per implementarla, quindi la descrivo solamente (sotto spoiler, così chi vuole leggerla la legge).
    Si inizia dal basso e si considera un piccolo triangolino formato da 3 numeri. Si effettua la somma di vertice + numero a sinistra, e quella di vertice è numero a destra. La somma maggiore viene inserita come vertice (poi posso eliminare la riga una volta fatti i calcoli (qui la elimino per chiarezza e comodità).

    Uso il triangolo dell'esempio di PE:
    CODICE
    3
       7  4
     2  4  6
    8  5  9  3


    questo diventa quindi (8+2=10; e 5+2=7; quindi tengo 10, e così via):
    CODICE
    3
       7    4
    10  13  15


    CODICE
    3
    20    19


    Quindi 20+3 = 23.

    Idee migliori al momento non ne ho.
  4. .
    Puoi scriverlo partendo dall'alto o dal basso. Dal basso è probabilmente più semplice, anche se meno performante.

    Se trovo tempo e voglia, più tardi, o al più questa notte, vedo di scrivere qualche riga di codice ed applicare ciò che ho in mente.
  5. .
    Posta il numero, lo ricordo a memoria.
  6. .
    No, non è maggiore, è minore di 100.000.
  7. .
    In C è altrettanto semplice. Sai che il numero è di 6 cifre, quindi con una variabile punti alla locazione 0, con l'altra alla 5 dell'array di caratteri. Una la incrementi ed una la decrementi (e confronti quel singolo carattere, ovviamente), sino a che arrivi a metà.
    Se usi i numeri puoi procedere con le divisioni, o incasinarti un po' la vita e coinvolgere gli operatori bitwise...


    Ps. Se vuoi aprire altro topic con altri quesiti fai pure, anzi, ci fa piacere. ;)
  8. .
    Alla fine poi è così semplice che anche non ottimizzando si arriva alla soluzione. ;)

    Comunque isPalindromo(int) puoi scriverlo come vuoi... per assurdo potresti anche fare una cosa così:
    CODICE
    boolean isPalindromo(int n) {
     String n1 = ""+n;
     reurn n1.equals(new StringBuilder(n1).reverse());
    }


    l'efficienza non è il suo forte, in quanto crei una stringa, e poi anche perchè in questo modo il confronto avviene su tutti i 6 caratteri.
  9. .
    Ciao e benvenuto! ;)

    Grazie per complimenti!
  10. .
    Grazie per il tuo parere uomo in verde. ;)
  11. .
    Se con compatibilità ti riferisci alle funzioni di PHP non devi preoccuparti, in quanto gira sul server e non sul browser. Se parli di codice lato client, lascio la parola ad Alchimist.

    Comunque tutto dipende dalla quantità di dati che devi gestire: se non sono tanti puoi gestirli anche con una matrice, in quanto non si noterebbe la differenza probabilmente. Ma se potrebbero essere tanti o crescere con il tempo, è meglio se usi già un db.
  12. .
    CITAZIONE (Dodiz @ 17/2/2014, 14:48) 
    La mia domanda è:
    utilizzando un altro script php, nella pagina, c'è un modo per riempire automaticamente quelle matrici, prendendo, come prima riga il titolo della pagina (<title></title>)
    e come secondo il link, senza il .php alla fine?

    Allora, tieni presente che da molti giorni dopo circa 2 o 3 ore a notte, quindi potrei essere lucido quanto uno ubriaco. lol

    Ma detto questo, ciò che vuoi fare non è complicato. Principalmente si tratta di prendere i file .php e listarli, ottenere tutti i path insomma. Una volta fatto, aprirai quel file, ed andrai a leggere il source usando le regex (o un qualsiasi modo che riconosca title come stringa a cui vuoi fermarti); fatto questo leggi sino a che non trovi la chiusura del title (ma sicuro ci sono funzioni belle e pronte per ricercare quel tag, e visto che è un tag che compare solo una volta, non avrai problemi nel trovarlo ed essere certo di volere quella parte soltanto). Ora non ricordo l'API PHP, domani se riesco - magari - scrivo qualcosa.


    CITAZIONE
    Oppure avrei pensato di poterlo scrivere manualmente in ogni pagina, ma vorrei che quelle pagine avessero un modo di passare le variabili (anzi, la parte della matrice), senza metodo $_GET o $_POST, in quanto l'utente non dovrà mai aprire direttamente quella pagina..

    Avrei un'altra idea ma non so come realizzarla, l'utilizzo di un database..ma di SQL non so praticamente niente..

    Non mi è chiaro quanto dici nel primo blocco... sarà perchè sono un po' stordito.

    Che informazioni devi memorizzare? Effettuare query e creare tabelle con PHP non è di per sè complesso.
  13. .
    Di nulla! ;)

    In pratica è da utilizzare ogni qual volta ti serve un ridisegno, anche se ogni tot minuti o tot secondi (immagina tipo Snake, il movimento del serpente avviene ridisegnando continuamente il serpente in coordinate differenti).
    A volte è utile anche chiamare revalidate(), ad esempio sui JPanel (quando si effettuano operazioni particolari).
  14. .
    Scusa se rispondo solo ora.
    Qual è il problema che trovi precisamente? Qual è la difficoltà?

    Comunque presta attenzione al costruttore di DisJOxy. Quando istanzi JOxy crei un nuovo oggetto, non stai utilizzando quello che hai dichiarato all'esterno nei campi di istanza.

    Ok ti ho modificato il source. lol

    CODICE
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;

    import javax.swing.JComponent;

    public class JOxy extends JComponent {
          int distx;
          int disty;
          int centrox;
          int centroy;
          private int max = 500;

          public JOxy() {
                  setPreferredSize(new Dimension(500, 500));
                  centrox = 400;
                  centroy = 100;
                  distx = 100;
                  disty = 100;
          }

          public void paintComponent(Graphics g) {
                  g.setColor(Color.red);
                  g.drawRect(0, 0, 500, 500);
                  g.setColor(Color.black);
                  if (centroy >= 0 & centrox <= max & centroy <= max & centrox >= 0) {
                          g.setColor(Color.black);
                          g.drawLine(centrox, 0, centrox, 500);
                          g.drawLine(0, centroy, 500, centroy);
                          int k = 0;
                          while (k <= 500) {
                                  g.drawLine(centrox - 3, k, centrox + 3, k);
                                  k += disty;
                          }
                          k = 0;
                          while (k <= 500) {
                                  g.drawLine(k, centroy - 3, k, centroy + 3);
                                  k += distx;
                          }
                          g.drawString("X", centrox + 10, 10);
                          g.drawString("Y", 490, centroy - 10);
                  }
          }
    }


    CODICE
    import java.awt.BorderLayout;
    import java.awt.EventQueue;

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.UIManager;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;

    public class DisJOxy extends JFrame {

          private JPanel contentPane;
          private JLabel lblDistanzaX;
          private JLabel lblDistanzaY;
          private JTextField txtYCentro;
          private JTextField txtXCentro;
          private JTextField textdisX;
          private JTextField textdisY;
          private JOxy oxy;

          /**
           * Launch the application.
           */
          public static void main(String[] args) {
                  try {
                          UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                  } catch (Throwable e) {
                          e.printStackTrace();
                  }
                  EventQueue.invokeLater(new Runnable() {
                          public void run() {
                                  try {
                                          DisJOxy frame = new DisJOxy();
                                          frame.setSize(580, 610);
                                          frame.setVisible(true);
                                  } catch (Exception e) {
                                          e.printStackTrace();
                                  }
                          }
                  });
          }

          /**
           * Create the frame.
           */
          public DisJOxy() {
                  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  setBounds(100, 100, 890, 658);
                  contentPane = new JPanel();
                  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                  setContentPane(contentPane);
                  contentPane.setLayout(null);
                  oxy = new JOxy();
                  oxy.setBounds(5, 59, 857, 511);
                  contentPane.add(oxy);

                  JLabel lblXCentro = new JLabel("X centro:");
                  lblXCentro.setBounds(5, 12, 55, 16);
                  contentPane.add(lblXCentro);

                  txtXCentro = new JTextField();
                  txtXCentro.setBounds(78, 10, 114, 20);
                  contentPane.add(txtXCentro);
                  txtXCentro.setColumns(10);

                  JLabel lblYCentro = new JLabel("Y centro:");
                  lblYCentro.setBounds(224, 12, 55, 16);
                  contentPane.add(lblYCentro);

                  lblDistanzaX = new JLabel("distanza X:");
                  lblDistanzaX.setBounds(5, 33, 68, 16);
                  contentPane.add(lblDistanzaX);

                  lblDistanzaY = new JLabel("distanza Y:");
                  lblDistanzaY.setBounds(224, 33, 68, 16);
                  contentPane.add(lblDistanzaY);

                  textdisX = new JTextField();
                  textdisX.setBounds(88, 33, 114, 20);
                  contentPane.add(textdisX);
                  textdisX.setColumns(10);

                  textdisY = new JTextField();
                  textdisY.setBounds(307, 33, 114, 20);
                  contentPane.add(textdisY);
                  textdisY.setColumns(10);

                  JButton btnAssegna = new JButton("Assegna");
                  btnAssegna.addActionListener(new ActionListener() {
                          public void actionPerformed(ActionEvent arg0) {
                                  salvaDati();
                                  oxy.repaint();
                          }
                  });
                  btnAssegna.setBounds(450, 18, 98, 26);
                  contentPane.add(btnAssegna);
                  txtYCentro = new JTextField();
                  txtYCentro.setBounds(297, 10, 114, 20);
                  contentPane.add(txtYCentro);
                  txtYCentro.setColumns(10);
          }

          public void salvaDati() {
                  oxy.centroy = Integer.parseInt(txtYCentro.getText());
                  oxy.centrox = Integer.parseInt(txtXCentro.getText());
                  oxy.distx = Integer.parseInt(textdisX.getText());
                  oxy.disty = Integer.parseInt(textdisY.getText());
          }
     }
  15. .
    Ciao e benvenuto ;)
5866 replies since 5/1/2009
.