All pastes #265981 Raw Edit

qooper

public java v1 · immutable
·published 2006-12-03 20:30 UTC
rendered paste body
public class Asteikko{  public static final char VIIVA = '-';    public static void main(String[] komentorivi)  {    int viivanPituus = 3;    int asteikonKorkeus = 7;    int[] mittari = asteikko(viivanPituus, asteikonKorkeus);    for (int i = 0; i < mittari.length; ++i)      System.out.println      (        toistettuna(VIIVA, mittari[i]) + " " +        toistettuna(' ', viivanPituus - mittari[i]) + i      );    return;  }  public static String toistettuna(char k, int n)  {    String tulos = "";    for (int i = 0; i < n; i++)      tulos += k;    return tulos;  }  /**   * Palauttaa n-pituisen asteikon, jonka väliviivat   * on osoitettu luvuilla väliltä [0, k]. Mitä isompi   * väliviivaluku on, sitä suuremman aliosan se jakaa.   * Taulukko on symmetrinen keski-indeksin suhteen   * jos (n + 1) on 2:n potenssi.   * Alkuehto: 0 <= k, n   */  public static int[] asteikko(int k, int n)  {    int[] tulos = new int[n]; // Oletusalustuksena 0.    täytäAsteikko(tulos, 0, tulos.length - 1, k);    return tulos;  }  /**   * Päivittää a:n lokerot a[e], a[e + 1], ..., a[v]   * asteikoksi arvoilla väliltä [1, k]. Niitä kohtia   * joille tulisi k == 0, ei tehdä muutoksia.   *   * AE: (a != null) & (0 <= e < a.length) & (e + 1 <= v) & (0 <= k)   */  private static void täytäAsteikko(int[] a, int e, int v, int k)  { // HUOM!! tästä alkaa se mitä pitää kirjottaa    a[e + (v - e)/2] = k; // divide the range in two, assign the middle cell with k    if ((v - e) > 1)    {      täytäAsteikko(a, e, e + (v - e)/2 - 1, k - 1); // call the function for the first half      täytäAsteikko(a, e + (v - e)/2 + 1, v, k - 1); // ditto for the last    }    return; // ja tähän loppuu  }}