Created
August 26, 2016 18:03
-
-
Save kangalio/62205c4d68d01cb05001d829de1a37f8 to your computer and use it in GitHub Desktop.
Small helper for Josephus Problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.ArrayDeque; | |
import java.util.Deque; | |
import java.util.Iterator; | |
import java.util.ArrayList; | |
import java.util.Scanner; | |
public class Main { | |
public static int[] test(int anzahl,boolean[] pattern) { | |
Deque<Integer> karten=new ArrayDeque<Integer>(); | |
int[] ergebnis=new int[anzahl]; | |
for(int i=0;i<anzahl;i++) { | |
karten.addLast(i+1); | |
} | |
int i=0; | |
int kartenAusgespielt=0; | |
while(!karten.isEmpty()) { | |
if(pattern[i]) { | |
ergebnis[kartenAusgespielt++]=karten.pop(); | |
} else { | |
karten.addLast(karten.pop()); | |
} | |
if(++i==pattern.length)i=0; | |
} | |
return ergebnis; | |
} | |
public static void main(String[] args) { | |
Scanner scanner=new Scanner(System.in); | |
System.out.print("Pruefe bis Anzahl (max. 2.147.483.647): "); | |
int anzahl=scanner.nextInt(); //DESKTOP COMPILER | |
//int anzahl=Integer.parseInt(args[0]); //ONLINE COMPILER | |
boolean[] pattern={true,false}; //HERE THE PATTERN IS DEFINED | |
ArrayList<Integer> ergebnis=new ArrayList<Integer>(); | |
System.out.println("Die letzen Karten sind:\n"); | |
int dingdong=anzahl/100; //PROZENT | |
System.out.println("===================================================================================================="); //PROZENT | |
for(int i=1;i<=anzahl;i++) { | |
if(i%dingdong==0)System.out.print("="); //PROZENT | |
ergebnis.add(test(i,pattern)[i-1]); | |
} | |
System.out.println(); //PROZENT | |
int lastEnd=0; | |
for(int i=1;i<anzahl;i++) { | |
//if(ergebnis.get(i)<ergebnis.get(i-1))System.out.println(ergebnis.get(i)); //ANFANGSZAHL EINER ZAHLENSERIE | |
//if(ergebnis.get(i)<=ergebnis.get(i-1)){System.out.println(ergebnis.get(i-1)-lastEnd);lastEnd=ergebnis.get(i-1);} //DIFFERENZEN DER ENDEN DER ZAHLENSERIEN | |
System.out.println((i+1)+": "+ergebnis.get(i)); //NORMALES AUSGEBEN | |
} | |
/* //START === RELATIVE HÄUFIGKEIT EINZEILNER ANFANGZAHLEN DER ZAHLENSERIEN | |
int[] bla=new int[pattern.length-1]; | |
int blub=0; | |
for(int i=1;i<anzahl;i++) { | |
if(ergebnis.get(i)<ergebnis.get(i-1)){bla[ergebnis.get(i)-2]++;blub++;} | |
} | |
for(int i=0;i<bla.length;i++) { | |
System.out.println("Anteil von "+(i+2)+": "+(((float)bla[i]/blub)*100)+"%"); | |
} | |
*/ //ENDE | |
scanner.close(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment