package proje;
import java.util.*;
public class mantik{
dugum root;
String[] kelime;
String[] elemanlar;
int sayac=0,say=0;
Scanner klavye=new Scanner(System.in);
public static void main(String[] args) {
mantik oku = new mantik();
oku.sayiGir();
oku.enBuyuk();
oku.elemanlar = new String[oku.kelime.length];
for(int i=0;i<oku.kelime.length;i++){
oku.elemanlar[i]=oku.SayiDonustur(Integer.parseInt(oku.kelime[i]));
}
oku.islemler();
}
void islemler(){
int islem =0;
while(kontrol()){
for(int i = 0;i<elemanlar.length;i++){
for(int j = i;j<elemanlar.length;j++)
{
if(karsilastir(elemanlar[i],elemanlar[j])!=null)
dugumeEkle(karsilastir(elemanlar[i],elemanlar[j]),kelime[i]+","+kelime[j]);
}
}
int sayac = 0;
dugum iter = root;
while(iter!=null){
iter = iter.next;
sayac++;
}
elemanlar = new String[root.boyut];
kelime = new String[root.boyut];
iter = root;
int i = 0;
while(iter!=null){
elemanlar[i]=iter.veri;
kelime[i]=iter.sayi;
iter=iter.next;
i++;
}
System.out.println(++islem+". İslem");
for(i = 0;i<kelime.length;i++){
System.out.println(kelime[i]+":"+elemanlar[i]);
}
root = null;
}
System.out.println(sonuc(elemanlar));
}
boolean kontrol(){
for(int i = 0;i<elemanlar.length;i++)
for(int j = i ;j<elemanlar.length;j++)
if(karsilastir(elemanlar[i],elemanlar[j])!= null)
return true;
return false;
}
void sayiGir(){
System.out.println("Sayıları giriniz :");
kelime = klavye.nextLine().split(",");
}
void yazdir(){
for(int i=0;i<kelime.length;i++)
System.out.println(kelime[i]);
}
void enBuyuk(){
int enbuyuk=0;
int i;
for(i=0;i<kelime.length;i++){
if(enbuyuk<Integer.parseInt(kelime[i])) enbuyuk = Integer.parseInt(kelime[i]);
}
while(0<enbuyuk){
enbuyuk=enbuyuk/2;
sayac++;
}
}
String SayiDonustur(int x){
int[] bitDizi= new int[sayac];
int i =sayac-1;
String sonuc="";
while(0<x){
bitDizi[i] = x%2;
x = x/2;
i--;
}
for( i=0;i<bitDizi.length;i++){
sonuc=sonuc+bitDizi[i];
}
return sonuc;
}
dugum son;
String karsilastir(String y,String z){
say = 0;
for(int i=0;i<y.length();i++)
if(y.charAt(i)!=z.charAt(i))
say++;
String yeni ="";
if(say==1)
for(int i=0;i<sayac;i++)
if(y.charAt(i)!=z.charAt(i)){
yeni+="-";
}else
yeni+=z.charAt(i);
else return null;
return yeni;
}
String sonuc (String[]Elemanlar){
String sonuc="";
for(int i = 0;i<elemanlar.length;i++)
{
int sayac =0;
String s="";
for(int j =0;j<elemanlar[i].length();j++){
if(elemanlar[i].charAt(j)!='-') {
char b = (char) (j+97);
s+=b;
}
else sayac++;
if(elemanlar[i].charAt(j)=='0')
s+="'";
}
if(sayac==elemanlar[i].length()) s="1";
if(sonuc.indexOf(s)<0) sonuc+=s+"+";
}
return sonuc;
}
void dugumeEkle(String yeni,String sayi ){
if(root==null){
root=new dugum();
root.veri=yeni;
root.sayi = sayi;
root.next=son;
son=root;
}
else{
dugum iter=new dugum();
iter.veri=yeni;
iter.sayi = sayi;
son.next=iter;
son=iter;
}
root.boyut++;
}
}
class dugum{
int boyut = 0;
String veri;
String sayi;
dugum next;
}