[SEEDS]Recherche communautaire : Programmer les seeds

korki22

Ingénieur Redstone
11 Juin 2011
117
2
13
Je me replonge dans le java ! (avec l'aide du Site du Zéro :D )
Sinon ya des trucs super intéressants dans le code de génération de la map a partir du hash !
 

Ankeraout11

Architecte en herbe
24 Août 2011
129
5
125
25
Toulouse
Merci beaucoup, mais hashCode() n'est pas utilisé !

On travaille sur une fonction qui fait l'inverse de Hash()

Edit :
Ma fonction ne marche pas, elle retourne 3 pour 128 haché... Voila mon code :

public class test1 {

private static int reverseHash(int i)
{
i = (int) Math.sqrt(i ^ i >>> 20 ^ i >>> 12);
return (int) Math.sqrt(i ^ i >>> 7 ^ i >>> 4);
}

private static int hash(int i)
{
i ^= i >>> 20 ^ i >>> 12;
return i ^ i >>> 7 ^ i >>> 4;
}

public static void main(String[] args) {
System.out.print(reverseHash(hash(128)));
}

}

Sortie : 3

Edit du code :

public class test1 {

private static int reverseHash(int i)
{
i = (int) Math.sqrt(i ^ i * 1024 ^ i * 64);
return (int) Math.sqrt(i ^ i * 11 ^ i * 4);
}

private static int hash(int i)
{
i ^= i / (2 ^ 20) ^ i / (2 ^ 12);
return i ^ i / (2 ^ 7) ^ i / (2 ^ 4);
}

public static void main(String[] args) {
System.out.print(reverseHash(hash(128)));
}

}

Sortie : 73 (on se rapproche !)

Le problème est dans le 11 : c'est en fait 11.3137085 mais il ne veut pas le compiler si je lui mets cette valeur... u_u
 

Gugu42

HUEHUAHUEHUAHUEHUAHUEHUA
29 Juin 2011
1 202
164
182
25
Collé a l'écran de mon PC
youtube.com
Normal qu'il ne veuille pas compiler !

J'ai implosé de rire en voyant l'érreur :

Un int ne contient que des entiers , convertis les nombres en double pour avoir des nombres décimaux. ;)

C'est une erreur qui arrive souvent et a chaque fois ça me fait rire car c'est juste un mot qui est pas bon et tout foire x)

Bref , je pense que cette ligne :
private static int reverseHash(int i)
Et celle la :
private static int hash(int i)

Si tu les change en ça :
private static int reverseHash(double i)

private static int hash(doube i)

Je pense que ça devrait fonctionner :)
 

Ankeraout11

Architecte en herbe
24 Août 2011
129
5
125
25
Toulouse
Ok, par contre pourrais-tu de ton côté essayer de reverser la fonction aussi ?
Parce que là je sèche XD

Sache aussi que la fonction Hash est la fonction que je veux reverser, donc inutile de la changer !

EDIT : Ca ne marche pas sur les deux lignes :

private static int reverseHash(double i)
{
i = Math.sqrt(i ^ i * 1024 ^ i * 64);
return Math.sqrt(i ^ i * 11 ^ i * 4);
}

Erreur : The operator ^ is undefined for the argument type(s) double, double
 

Ankeraout11

Architecte en herbe
24 Août 2011
129
5
125
25
Toulouse
On attend !

Il faudra qu'il corrige ce code et fasse en sorte que reverseHash() soit l'inversion du processus de hash().

public class test1 {

private static int reverseHash(double i)
{
i = Math.sqrt(i ^ i * 1024 ^ i * 64);
return Math.sqrt(i ^ i * 11.3137085 ^ i * 4);
}

private static int hash(int i)
{
i ^= i / (2 ^ 20) ^ i / (2 ^ 12);
return i ^ i / (2 ^ 7) ^ i / (2 ^ 4);
}

public static void main(String[] args) {
System.out.print(reverseHash(hash(128)));
}

}