View Full Version : Aiutino Java
Brcondor
16th December 2013, 19:23
Ciao a tutti.
Avrei bisogno di un piccolo aiuto.
C'è un modo semplice per trovare tutte le stringhe uguali a meno di un eventuale carattere finale ?
Chessò che riconosca scimmia scimmie come uguali, ma anche like e likes?
Usando String.startsWith becco anche parole che hanno semplicemente lo stesso inizio, e a me non va bene.
Usando String.Contains mi riconosce vertebrati e invertebrati e anche questo non lo voglio...
Tipo i wildcards di SQL
Kat
16th December 2013, 20:31
Dai un occhio alle regular expressions, tipo le classi java.util.regex.Pattern e java.util.regex.Matcher.
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
Axet
16th December 2013, 23:56
Dai un occhio alle regular expressions, tipo le classi java.util.regex.Pattern e java.util.regex.Matcher.
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
*
Brcondor
17th December 2013, 01:26
Ok, grazie :).
Hador
17th December 2013, 09:59
Alternativamente estendi string reimplementando l'equals eliminando l'ultimo char, poi cerchi le stringhe "uguali"
Brcondor
17th December 2013, 14:14
cazzo hador, questa mi piace di più come soluzione :). Mi basta segare di base l'ultimo carattere e fare un check uguali :) <3
Hador
17th December 2013, 14:21
a fare ste zozzerie so un campione :sneer:
Axet
17th December 2013, 15:07
Alternativamente estendi string reimplementando l'equals eliminando l'ultimo char, poi cerchi le stringhe "uguali"
Elegantissimo :gha:
Hador
17th December 2013, 15:25
Think in OO :nod:
La cosa migliore sarebbe usare un wrapper, ma vabbè non esageriamo :nod:
Hador
17th December 2013, 15:40
public class StringProva {
String body;
String gender;
public StringProva(String s) {
body = s.substring(0, s.length()-1);
gender = s.substring(s.length()-1, s.length()) ;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((body == null) ? 0 : body.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
StringProva other = (StringProva) obj;
if (body == null) {
if (other.body != null)
return false;
} else if (!body.equals(other.body))
return false;
return true;
}
}
LA SOLUZIONEH DEL SOFTWARE ENGINEER :sneer:
ma se tieni quell'hashcode e usi un hashset non sei in grado di distinguere tra due istanze con "genere" diverso...
si, i miei programmi sono tutti così :sneer:
Zaider
17th December 2013, 16:27
figa hador sei squallidissimo :rotfl:
Brcondor
17th December 2013, 16:33
Io ho abbastanza uno stile simile nel cercare le porcate che funzionino.
Ho risolto così
if(words[k].equalsIgnoreCase((term[j])) || (words[k].startsWith(term[j]) && words[k].length()<term[j].length()+2 )
ossia se o sono uguali oppure la prima inizia con la seconda e ha al massimo 2 caratteri in più(messi 2 in più così per sicurezza, in realtà ne basta uno).
Isipirato da hador, che ringrazio ancora, ho fatto una versione mista
body = term[j].substring(0, term[j].length()-1);
if(words[k].equalsIgnoreCase((term[j])) || (words[k].startsWith(body) && words[k].length()<body.length()+3))
Così becco anche wolf-wolves
Hador
17th December 2013, 16:48
oh la mia soluzione è fichissima, pochi cazzi.
Ancora meglio, scaricherei il dump di wikidictionary, me lo caricherei in una mappa e cercherei i plurali così :sneer:
Axet
17th December 2013, 18:10
Io ho abbastanza uno stile simile nel cercare le porcate che funzionino.
Ho risolto così
if(words[k].equalsIgnoreCase((term[j])) || (words[k].startsWith(term[j]) && words[k].length()<term[j].length()+2 )
ossia se o sono uguali oppure la prima inizia con la seconda e ha al massimo 2 caratteri in più(messi 2 in più così per sicurezza, in realtà ne basta uno).
Isipirato da hador, che ringrazio ancora, ho fatto una versione mista
body = term[j].substring(0, term[j].length()-1);
if(words[k].equalsIgnoreCase((term[j])) || (words[k].startsWith(body) && words[k].length()<body.length()+3))
Così becco anche wolf-wolves
Senza tanti giri di parole: è una merda.
Le reg exp esistono per un motivo.
Alternativamente cercati qualcosa su prefix / suffix trees se vuoi fare il sofista.
Kat
17th December 2013, 18:46
public class StringProva {
String body;
String gender;
public StringProva(String s) {
body = s.substring(0, s.length()-1);
gender = s.substring(s.length()-1, s.length()) ;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((body == null) ? 0 : body.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
StringProva other = (StringProva) obj;
if (body == null) {
if (other.body != null)
return false;
} else if (!body.equals(other.body))
return false;
return true;
}
}
LA SOLUZIONEH DEL SOFTWARE ENGINEER :sneer:
ma se tieni quell'hashcode e usi un hashset non sei in grado di distinguere tra due istanze con "genere" diverso...
si, i miei programmi sono tutti così :sneer:
Che porcheria immonda lol
Brcondor
17th December 2013, 19:05
Ora, superata brillantemente la parte precedente, sto tirando le madonne per trovare una cristo di API per fare NLP che non mi richieda due settimane di studio :P. Qualche idea :P ?
innaig86
17th December 2013, 19:06
Solo due?
edit: ma la domanda precedente era per fare stemming? Per l'inglese c'è l'algoritmo specifico, non dovresti avere problemi a trovarlo.
Hador
17th December 2013, 20:22
Che porcheria immonda loldesign patterns :nod:
(tra l'altro avevo letto male il tutto e manco funziona :sneer:)
comunque se questo non è un esercizio stupido di algoritmica, ste qua sono tutte porcherie. Tirati giù veramente wikidictionary e cercati i plurali li.
Brcondor
18th December 2013, 00:08
Ma non era così findamentale il plurare.
Non è per fare stemming, non so manco cosa voglia dire.
E' per la mia tesi, sta uscendo una cosa molto interessante ma devo passare per forza dal NLP per arrivare da qualche parte.
Ho trovaato GATE, sembra figo ma un fottuto puttanaio, manco usando il tutorial con immagini sono riuscito a farlo funzionare(nella versione con GUI, figuriamoci a fare tutto con le API) :P
Abby
18th December 2013, 07:32
Ma non era così findamentale il plurare.
Non è per fare stemming, non so manco cosa voglia dire.
E' per la mia tesi, sta uscendo una cosa molto interessante ma devo passare per forza dal NLP per arrivare da qualche parte.
Ho trovaato GATE, sembra figo ma un fottuto puttanaio, manco usando il tutorial con immagini sono riuscito a farlo funzionare(nella versione con GUI, figuriamoci a fare tutto con le API) :P
Non so se ti possa essere utile un altro approccio, passando per la Programmazione Logica con ad esempio il Prolog.
Vantaggio è una più semplice definizione, e l'uso tramite "riga" di comando di file di testo in input e output che puoi gestire in java.
Un esempio di applicazione del Prolog al Natural Language Processing.
http://cs.union.edu/~striegnk/courses/nlp-with-prolog/html/
Ps mia personale opinione, ma ogni volta che scrivi qui sembra sempre che, per uccidere una mosca, tu stia costruendo nemmeno un cannone ma proprio la morte nera!! ;)
Brcondor
18th December 2013, 10:06
:). In realtà quello che a me servirebbe è il POS in inglese(part of speach).
Il mio progetto è estremamente ambizioso, ma se riesco a fare quel che voglio, faccio il botto :).
Non ho idea di cosa sia il prolog, se è integrabile in java senza troppi casini e funziona(ed è più semplice), mi va benissimo usarlo :). Ora cerco, grazie per la dritta
Axet
18th December 2013, 10:10
Non so se ti possa essere utile un altro approccio, passando per la Programmazione Logica con ad esempio il Prolog.
Vantaggio è una più semplice definizione, e l'uso tramite "riga" di comando di file di testo in input e output che puoi gestire in java.
Un esempio di applicazione del Prolog al Natural Language Processing.
http://cs.union.edu/~striegnk/courses/nlp-with-prolog/html/
Ps mia personale opinione, ma ogni volta che scrivi qui sembra sempre che, per uccidere una mosca, tu stia costruendo nemmeno un cannone ma proprio la morte nera!! ;)
Stai chiedendo a uno che praticamente non ha conoscenze di informatica di usare prolog?
Pagherei per potermi sedere e guardare brcondor mentre ci lavora :sneer:
Brcondor
18th December 2013, 11:10
Non è così vero che "praticamente non ho conoscenze d'informatica". E poi quello che non so lo rattoppo con un po' di entusiasmo e curiosità(e qualche buon consiglio raccolto a destra e a manca) :P.
Ad oggi so programmare in C, quasi in Java(sono in training), SQL(compresi trigger), OQL, Xpath/xquery, ho usato uno sproposito Matlab, OWL2(tramite protege e tramite OWLAPI).
Estrema
18th December 2013, 11:34
Non è così vero che "praticamente non ho conoscenze d'informatica". E poi quello che non so lo rattoppo con un po' di entusiasmo e curiosità(e qualche buon consiglio raccolto a destra e a manca) :P.
Ad oggi so programmare in C, quasi in Java(sono in training), SQL(compresi trigger), OQL, Xpath/xquery, ho usato uno sproposito Matlab, OWL2(tramite protege e tramite OWLAPI).
non c'hai ancora la laurea proton è lo classico milanese ce te spernacchia finche non hai almeno un titolo vagamente vicino al suo :sneer:
detto questo io de programmazione poco ce capisco ma mi sta smpatico brcondor perchè s'impegna e tifo per lui anche se ha comprato il telefono ciofeca:sneer:
Brcondor
18th December 2013, 11:36
<3 (tra l'altro, andando OT, è un fottuto capolavoro quel cellulare :) )
innaig86
18th December 2013, 12:03
Prolog è programmazione logica, tutta un'altra cosa rispetto alla programmazione ad oggetti di Java o al C. E' proprio un approccio mentale diverso e non penso tu riesca a farlo in poco tempo.
Comunque per l'identificazione delle part of speech dai uno sguardo alla libreria Stanford per il nlp: http://nlp.stanford.edu/software/
ps: lo stemming è un'operazione preliminare di nlp che estrae la radice delle parole, eliminando le desinenze dovute a genere, numero, coniugazione di verbi ecc..
Esempio:
walking -> walk
walks -> walk
catches -> catch
E' utile, per esempio, a migliorare i motori di ricerca.
Brcondor
18th December 2013, 12:18
Prolog è programmazione logica, tutta un'altra cosa rispetto alla programmazione ad oggetti di Java o al C. E' proprio un approccio mentale diverso e non penso tu riesca a farlo in poco tempo.
Comunque per l'identificazione delle part of speech dai uno sguardo alla libreria Stanford per il nlp: http://nlp.stanford.edu/software/
ps: lo stemming è un'operazione preliminare di nlp che estrae la radice delle parole, eliminando le desinenze dovute a genere, numero, coniugazione di verbi ecc..
Esempio:
walking -> walk
walks -> walk
catches -> catch
E' utile, per esempio, a migliorare i motori di ricerca.
Ok, do un occhio anche a quello. Grazie mille a tutti.
Sto leggendo quel link che mi ha datto abby e non mi sembra nulla di particolarmente ostico, anche perchè in maniera simile sono molto abituato a ragionare... alla fine cerco la cosa più semplice che funzioni, anche non perfettamente.
Axet
18th December 2013, 15:19
Non è così vero che "praticamente non ho conoscenze d'informatica". E poi quello che non so lo rattoppo con un po' di entusiasmo e curiosità(e qualche buon consiglio raccolto a destra e a manca) :P.
Ad oggi so programmare in C, quasi in Java(sono in training), SQL(compresi trigger), OQL, Xpath/xquery, ho usato uno sproposito Matlab, OWL2(tramite protege e tramite OWLAPI).
Magari ricordo male io ma mi pare che tu non stia studiando informatica. E sentir dire "io so programmare", senza offesa, è una bestialità.
1) saper programmare non vuol dire mettere insieme 3 linee di codice
2) programmare, anche bene, non vuol necessariamente dire conoscere l'informatica
Alternativamente perchè la gente studierebbe 5 anni? :rolleyes:
non c'hai ancora la laurea proton è lo classico milanese ce te spernacchia finche non hai almeno un titolo vagamente vicino al suo :sneer:
detto questo io de programmazione poco ce capisco ma mi sta smpatico brcondor perchè s'impegna e tifo per lui anche se ha comprato il telefono ciofeca:sneer:
Non è questione di avere un titolo vagamente vicino al mio, è questione che lui fa tutt'altro e in più si diletta con ste cose. E' come dire che io sono un architetto perchè da piccolo giocavo coi lego, toh.
Il che non vuol dire che non si debbano dare consigli o aiutare, anzi lo sforzo è assolutamente apprezzabile, ma soluzioni come quella che ha postato sono una merda apocalittica. Nonostante gli siano state suggerite altre vie molto più sensate (reg exp) :nod:
Brcondor
18th December 2013, 16:54
Sto facendo la tesi per la specialistica di ingegneria biomedica al polimi. C'era un ragazzotto, tracotante e spocchioso, amico di un amico e ingegnere informatico.
Un giorno gli raccontai che mi ero iscritto a basi di dati 2(non so se hai fatto il poli o cosa, ma quello è l'esame per cui la gente non si laurea alla specialistica, a detta di altri ingegneri informatici e non a detta mia), lui mi rise in faccia dicendomi fai prima ad abbandonare e seguire un altro corso il prossimo semestre.
L'ho beccato poi a marzo, ho preso 29 e sono stato il migliore di quella prova, mettendolo in culo a lui(che aveva preso 23) e agli altri 100 iscritti, ingegneri informatici.
Un titolo è un pezzo di carta che vien buono per pulirsi il culo, è la passione e la curiosità che ti fanno arrivare.
Ho deciso di fare una tesi "implementativa" proprio per colmare quelle che io definisco lacune, come il non saper programmare in java(lacuna che sto colmando).
E non mi dire che servono 5 anni di università per imparare a programmare, mi vengono così in mente una decina di persone che l'università manco l'han vista col binocolo eppure hanno fatto cose interessanti.
innaig86
18th December 2013, 17:02
State dando una interpretazione differente al significato "saper programmare".
Per te vuol dire riuscire a scrivere un programma che faccia quello che vuoi, mentre Axet intende saper usare il paradigma, il linguaggio e tutto il resto al massimo delle sue potenzialità e secondo i criteri per cui è stato pensato.
Axet
18th December 2013, 17:41
Sto facendo la tesi per la specialistica di ingegneria biomedica al polimi. C'era un ragazzotto, tracotante e spocchioso, amico di un amico e ingegnere informatico.
Un giorno gli raccontai che mi ero iscritto a basi di dati 2(non so se hai fatto il poli o cosa, ma quello è l'esame per cui la gente non si laurea alla specialistica, a detta di altri ingegneri informatici e non a detta mia), lui mi rise in faccia dicendomi fai prima ad abbandonare e seguire un altro corso il prossimo semestre.
L'ho beccato poi a marzo, ho preso 29 e sono stato il migliore di quella prova, mettendolo in culo a lui(che aveva preso 23) e agli altri 100 iscritti, ingegneri informatici.
Un titolo è un pezzo di carta che vien buono per pulirsi il culo, è la passione e la curiosità che ti fanno arrivare.
Ho deciso di fare una tesi "implementativa" proprio per colmare quelle che io definisco lacune, come il non saper programmare in java(lacuna che sto colmando).
E non mi dire che servono 5 anni di università per imparare a programmare, mi vengono così in mente una decina di persone che l'università manco l'han vista col binocolo eppure hanno fatto cose interessanti.
Hai ragione, sei troppo figo. Turing ti fa una sega.
La fantastica soluzione con cui hai risolto il problema non è un esempio di saper programmare, è roba che producono i ragazzetti in terza superiore che lavorano su ste cose da 3 mesi.
E nota bene che è una merda a prescendiere dal fatto che sia java, C++ o qualsiasi altro.
Ma la cosa più fun di tutte è che tu riduci l'informatica a saper programmare, e questo denota tutta la tua ignoranza a riguardo :)
29, woot. Vuoi sapere la mia media alla specialistica? :sneer:
State dando una interpretazione differente al significato "saper programmare".
Per te vuol dire riuscire a scrivere un programma che faccia quello che vuoi, mentre Axet intende saper usare il paradigma, il linguaggio e tutto il resto al massimo delle sue potenzialità e secondo i criteri per cui è stato pensato.
*
E come detto anche sopra, quella è solo una frazione di cos'è l'informatica.
Zaider
18th December 2013, 17:46
L'ho beccato poi a marzo, ho preso 29 e sono stato il migliore di quella prova, mettendolo in culo a lui(che aveva preso 23) e agli altri 100 iscritti, ingegneri informatici.
Un titolo è un pezzo di carta che vien buono per pulirsi il culo, è la passione e la curiosità che ti fanno arrivare.
fai troppo brutto, sei un sacco pericoloso. Come l'AIDS in un club gay.
Abby
18th December 2013, 17:54
Programmatore: E' colui che ti risolve in modo incomprensibile un problema che non sapevi di avere :D
Dryden
18th December 2013, 18:35
E il Nokia Lumia è una merda!
Hador
18th December 2013, 19:16
raga buoni, tanto quello che sta a fa il phd qua sono io ergo sono più figo di tutti
Hardcore
18th December 2013, 22:19
Sto facendo la tesi per la specialistica di ingegneria biomedica al polimi. C'era un ragazzotto, tracotante e spocchioso, amico di un amico e ingegnere informatico.
Un giorno gli raccontai che mi ero iscritto a basi di dati 2(non so se hai fatto il poli o cosa, ma quello è l'esame per cui la gente non si laurea alla specialistica, a detta di altri ingegneri informatici e non a detta mia), lui mi rise in faccia dicendomi fai prima ad abbandonare e seguire un altro corso il prossimo semestre.
L'ho beccato poi a marzo, ho preso 29 e sono stato il migliore di quella prova, mettendolo in culo a lui(che aveva preso 23) e agli altri 100 iscritti, ingegneri informatici.
Un titolo è un pezzo di carta che vien buono per pulirsi il culo, è la passione e la curiosità che ti fanno arrivare.
Ho deciso di fare una tesi "implementativa" proprio per colmare quelle che io definisco lacune, come il non saper programmare in java(lacuna che sto colmando).
E non mi dire che servono 5 anni di università per imparare a programmare, mi vengono così in mente una decina di persone che l'università manco l'han vista col binocolo eppure hanno fatto cose interessanti.
Programmare non vuol dire risolvere i problemi usando un linguaggio.
Sapere l'italiano non vuol dire essere in grado di scrivere un grande romanzo.
La programmazione non e'assolutamente buttare giu N righe di codice (M classi) e bon fare il programmino che ti risolve le cose.
Saper programmare vuol dire sapere risolvere il problema che ti viene posto, nel modo corretto, che sia performante, mantenibile e PER DIO (questo e'riferito a codici visti a lavorare) leggibile.
La soluzione da te addottata si definisce "porcata", fai una cosa inutile per risolvere un problema semplice.
Uppo Axet, la soluzione corretta e' quella delle RegEx.
Zaider
19th December 2013, 16:29
raga buoni, tanto quello che sta a fa il phd qua sono io ergo sono più figo di tutti
al limite quello che brucia più soldi di tutti :sneer:
Axet
19th December 2013, 16:35
raga buoni, tanto quello che sta a fa il phd qua sono io ergo sono più figo di tutti
Se fai il phd e tiri fuori dal cilindro roba del genere che lo fai a fare il phd? :sneer:
Hador
19th December 2013, 17:35
siete solo dei volgari pigiatasti, che ne capite.
Brcondor
19th December 2013, 18:07
Ma quelli che hanno gridato all'eretico, sono informatici o ingegneri informatici? Così, per curiosità
Zaider
19th December 2013, 18:12
siete solo dei volgari pigiatasti, che ne capite.
quando la tua santa mecca statale finirà godrò tanto tanto nel farti compilare macro di excel :sneer:
ovviamente sul mio mba
Hador
19th December 2013, 20:19
Ma quelli che hanno gridato all'eretico, sono informatici o ingegneri informatici? Così, per curiositàsi infatti, perchè i primi studiano informatica e i secondi ingegneria informatica!
Brcondor
19th December 2013, 21:47
No non era tanto quello. Era più che altro l'approccio elegante VS quello che funziona. Io da ing.(non informatico) scelgo il secondo, ed ero curioso di sapere cosa fossero i miei detrattori.
Kat
19th December 2013, 22:16
In genere io scelgo l'approccio elegante che funziona :nod:
Brcondor
19th December 2013, 22:23
Si ma il discorso è, a parità di funzionamento, conviene l'approccio elegante che richiede un tempo più lungo o l'approccio meno elegante che richiede una porcata da mezzo secondo?
Alla fine la base della programmazione a oggetti non è mica quella di non fare vedere all'esterno nulla se non l'interfaccia :P ?
Hador
19th December 2013, 22:29
No non era tanto quello. Era più che altro l'approccio elegante VS quello che funziona. Io da ing.(non informatico) scelgo il secondo, ed ero curioso di sapere cosa fossero i miei detrattori.ascolta me, ti stai accartocciando in un mare di stronzate :sneer:
innaig86
19th December 2013, 23:00
Si ma il discorso è, a parità di funzionamento, conviene l'approccio elegante che richiede un tempo più lungo o l'approccio meno elegante che richiede una porcata da mezzo secondo?
Alla fine la base della programmazione a oggetti non è mica quella di non fare vedere all'esterno nulla se non l'interfaccia :P ?
Dipende.
Se è un programmino da 4 soldi che fai oggi e non ti serve più già domani, puoi metterci dentro quello che vuoi.
Se qualcuno deve metterci mani in futuro (compreso te), conviene investire ora del tempo a ricercare soluzioni leggibili, manutenibili e documentate. Altrimenti diventa un incubo.
Brcondor
20th December 2013, 14:36
ascolta me, ti stai accartocciando in un mare di stronzate :sneer: Mi sa che tu c'hai ragione :P
Hardcore
20th December 2013, 21:52
No non era tanto quello. Era più che altro l'approccio elegante VS quello che funziona. Io da ing.(non informatico) scelgo il secondo, ed ero curioso di sapere cosa fossero i miei detrattori.
Se vuoi un consiglio levati subito dalla testa l' idea che ci sia una distinzione netta e trasversale tra ing informati e laureati in informatica.
Sono due persone entrambe con la stessa passione che hanno studiato diciamo tematiche diverse inerenti pero alla stessa materia.
La distinzione non e'tra elegante e quello che funziona.
La distinzione e'tra chi lavora bene e chi lavora male.
Poi queste son cose che si imparano lavorando, fin che si fa l'universita il software che scrivi e'principalmente per te stesso. In azienda cosi non e' e spesso devi mettere mano a codice scritto da altri che ha adottato la tua filosofia del (tanto loro vedono solo quello che espongo come interfaccia), non ti dico le bestemmie. Ma si impara, l'universita serve per questo :)
Brcondor
21st December 2013, 14:37
Ok, seguirò il vostro consiglio :)
Mosaik
21st December 2013, 21:32
Poi queste son cose che si imparano lavorando, fin che si fa l'universita il software che scrivi e'principalmente per te stesso. In azienda cosi non e' e spesso devi mettere mano a codice scritto da altri che ha adottato la tua filosofia del (tanto loro vedono solo quello che espongo come interfaccia), non ti dico le bestemmie. Ma si impara, l'universita serve per questo :)
Ecco diciamo che questo è il 90% del software che ci sta in giro tranne veramente rare eccezioni.
Ho visto cose che a confronto la soluzione di Hador sembra una cosa uscita direttamente da Google :D
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.