Advertisement
Guest User

Untitled

a guest
Jan 3rd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.44 KB | None | 0 0
  1. /* STUDENT SUBMISSION BEGINS */
  2. public class hirsipuu{
  3.     public static void main (String[] args){
  4.         Long l = Long.parseLong(args[0]);
  5.         Apumetodit apu = new Apumetodit(l);
  6.         String pMerkki = apu.lueMerkkijono();
  7.         int pLuku = apu.lueKokonaisluku();
  8.        
  9.         StringBuffer tSana=new StringBuffer();
  10.         for (int k=0;k<pMerkki.length();k++){
  11.             tSana.append('_');
  12.         }
  13.         System.out.println(tSana);
  14.        
  15.         for (int i=0;i<=pLuku;i++){
  16.             String tMerkki = apu.lueMerkkijono();
  17.             if(tSana.toString().equals(pMerkki)){
  18.                 System.out.println("Onnistuit!");
  19.                 break;
  20.             }
  21.             if (tMerkki == ""){
  22.                 System.out.println("Tarvitaan vähintään yksi merkki.");
  23.                 continue;
  24.             }
  25.             for (int x=0;x<pMerkki.length();x++){
  26.                 if (tMerkki.charAt(0) == pMerkki.charAt(x)){
  27.                     tSana.setCharAt(x, pMerkki.charAt(x));
  28.                 }
  29.             }
  30.             System.out.println(tSana);
  31.         }
  32.     }
  33. }
  34.  
  35. /* STUDENT SUBMISSION ENDS */
  36.  
  37. class Apumetodit{
  38.  
  39.     private class MjonoGeneraattori{
  40.         int arvottu = 0;
  41.         String arvattavaSana = null;
  42.        
  43.         java.util.ArrayList<String> arvaamatta = new java.util.ArrayList<>(
  44.             java.util.Arrays.asList(
  45.             new String[]{"q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m"}));
  46.        
  47.         private final java.util.ArrayList<String> kaupungit = new java.util.ArrayList<String>(
  48.             java.util.Arrays.asList(
  49.             new String[]{"Helsinki", "Turku", "Salo", "Vantaa", "Kuopio", "Istanbul", "Madrid", "Tokio", "Berliini", "Rooma", "Tukholma"}));
  50.  
  51.        
  52.         String seuraava(){
  53.             if(arvottu++ == 0) {
  54.                 arvattavaSana = kaupungit.get(r.nextInt(kaupungit.size())).toLowerCase();
  55.                
  56.                 if(r.nextBoolean()){
  57.                     arvaamatta.clear();
  58.                     for(char c : arvattavaSana.toCharArray()) arvaamatta.add(c+"");
  59.                 }
  60.                
  61.                 return arvattavaSana;
  62.             }
  63.                
  64.             //20% mahis tyhjälle merkkijonolle
  65.             if(r.nextDouble() < 0.2)
  66.                 return "";
  67.            
  68.             if(arvaamatta.size() == 0){
  69.                 System.out.println("Kaikki kirjaimet on jo arvattu!");
  70.                 return " ";
  71.             }
  72.            
  73.             return arvaamatta.remove(r.nextInt(arvaamatta.size()));
  74.         }
  75.     }
  76.     private final java.util.Random r;
  77.     private final MjonoGeneraattori gen;
  78.    
  79.     public Apumetodit(long siemen) {
  80.         r = new java.util.Random(siemen);
  81.         gen = new MjonoGeneraattori();
  82.     }
  83.    
  84.     /**
  85.      * Käyttäjä syöttää ohjelmallesi yhden merkkijonon.<br>
  86.      * @return Käyttäjän syöttämä merkkijono
  87.      */
  88.     public String lueMerkkijono() {
  89.         String kaupunki = gen.seuraava();
  90.            
  91.         System.out.println("<ignore>*Odotetaan syötettä:"+kaupunki);
  92.         return kaupunki;
  93.        
  94.     }
  95.  
  96.     /**
  97.      * Käyttäjä syöttää ohjelmallesi yhden kokonaisluvun.<br>
  98.      * @throws Exception poikkeus heitetään, jos käyttäjä syöttää jotakin muuta kuin numeron
  99.      * @return Käyttäjän syöttämä kokonaisluku
  100.      */
  101.     //System.in sulkeminen on huono juttu
  102.     @SuppressWarnings("resource")  
  103.     public int lueKokonaisluku() throws NumberFormatException {
  104.        
  105.         //ViLLE syöttää jotakin muuta kuin numeron 10% todennäköisyydellä
  106.         if(r.nextDouble() < 0.1){
  107.             System.out.println("<ignore>*Odotetaan syötettä:"+satunnainenMerkkijono());
  108.             throw new NumberFormatException();
  109.         }
  110.            
  111.         int syote = r.nextInt(15)+5;
  112.         System.out.println("<ignore>*Odotetaan syötettä:"+syote);
  113.         return syote;
  114.     }
  115.    
  116.     /**
  117.      * Toimii kuten Random-luokan nextInt. Palauttaa satunnaisen kokonaisluvun väliltä [0,ylaraja[.<br>
  118.      * Yläraja on eksklusiivinen, eli sitä ei koskaan palauteta.
  119.      * @param ylaraja eksklusiivinen yläraja satunnaiselle kokonaisluvulle
  120.      * @return satunnainen kokonaisluku x: 0 <= x < ylaraja
  121.      */
  122.     public int satunnainenKokonaisluku(int ylaraja) {
  123.         return r.nextInt(ylaraja);
  124.     }
  125.  
  126.     private String satunnainenMerkkijono(){
  127.         String s = "qwertyuiopasdfghjklzxcvbnm";
  128.        
  129.         int pituus = r.nextInt(5)+2;
  130.         String result = "";
  131.         for(int i=0; i<pituus; i++){
  132.             result += s.charAt(r.nextInt(s.length()));
  133.         }
  134.         return result;
  135.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement