Fylling Skrevet 12. september 2013 Del Skrevet 12. september 2013 (endret) Hei! Eg er medlem på ei facebook gruppe der personer for det meste spørr hjelp om lekse eller noko annet, og eg ser enkelt korleis diverse kan bli løyst. Så det holder tankegangen gående. Så ein dag den 27. juni, postet eit medlem ei gåte på gruppa: hi friend.. pls some help me to print numbers like this in java...1 2 3 4 5 618 19 20 21 22 717 28 29 30 23 816 27 26 25 24 915 14 13 12 11 10... Pls help me... Eg skjønte jo det så enkelt som at kvar linje var uavhengig av kvarandre, men i dag så såg eg at istadenfor fleire forskjellige uavhengige linjer, så kan det ver ein array som danner eit visuelt mønster: 1, 2, 3, 4, 5, 6, 18, 19, 20, 21, 22, 7, 17, 28, 29, 30, 23, 8, 16, 27, 26, 25, 24, 9, 15, 14, 13, 12, 11, 10 I dette tilfellet er det da ein "firkantet sirkel" 0.o Dere kan tenke dere ein hypnose sirkel http://0o2471.net/55649 som dere ser da så stiger verdien med ein heile vegen, med indeks verdier så blir det: [0][0] -> [0][5] -> [4][5] -> [4][0] -> [1][0] -> [1][4] -> [3][4] -> etc. Men eg vetje heilt korleis eg skal programmere denne, nokon andre som veit? Endret 12. september 2013 av Fylling Lenke til kommentar
liquidsquid Skrevet 12. september 2013 Del Skrevet 12. september 2013 Måtte tenke litt, men fikk det til å funke til slutt. public class Drit { public static int size = 6, xMax = size, yMax = size, xMin = 0, yMin = 0; public static String[][] hei; public enum Direction { RIGHT, DOWN, LEFT, UP } public static void main(String[] args) { hei = new String[yMax][xMax]; initTheShit(); doDaThing(); } public static void initTheShit() { for(int y = 0; y < yMax; y++) { for(int x = 0; x < xMax; x++) { hei[y][x] = "X"; } } } public static void doDaThing() { Direction d = Direction.RIGHT; int counter = 1; int x = 0; int y = 0; while(!((xMin > xMax) && (yMin > yMax))) { if(d == Direction.RIGHT) { while(x < xMax) { hei[y][x] = Integer.toString(counter); printTheShit(); x++; counter++; } y++; xMax--; x = xMax; d = Direction.DOWN; } else if(d == Direction.DOWN) { while(y < yMax) { hei[y][x] = Integer.toString(counter); printTheShit(); y++; counter++; } x--; yMax--; y = yMax; d = Direction.LEFT; } else if(d == Direction.LEFT) { while(x > xMin) { hei[y][x] = Integer.toString(counter); printTheShit(); counter++; x--; } x = xMin; xMin++; d = Direction.UP; } else if(d == Direction.UP) { while(y > yMin) { hei[y][x] = Integer.toString(counter); printTheShit(); y--; counter++; } x++; yMin++; y = yMin; d = Direction.RIGHT; } } } public static String padRight(String s, int n) { return String.format("%1$-" + n + "s", s); } public static void printTheShit() { for(int y = 0; y < size; y++) { for(int x = 0; x < size; x++) { //System.out.print(hei[y][x] + " "); System.out.print(padRight(hei[y][x], 3)); } System.out.println(); } System.out.println(); System.out.println(); } } Lenke til kommentar
jonny Skrevet 12. september 2013 Del Skrevet 12. september 2013 (endret) Her er et forslag til hvordan det kan kodes, forutsatt at jeg har forstått problemet: public class Test { public static void main(String[] args) { int arr[][] = new int[5][6]; int row_min = 0; int row_max = arr.length - 1; int col_min = -1; int col_max = arr[0].length - 1; int value = 1; while (value <= arr.length*arr[0].length) { for (int x = ++col_min; x <= col_max && row_min <= row_max; x++) arr[row_min][x] = value++; for (int y = ++row_min; y <= row_max && col_min <= col_max; y++) arr[y][col_max] = value++; for (int x = --col_max; x >= col_min && row_min <= row_max; x--) arr[row_max][x] = value++; for (int y = --row_max; y >= row_min && col_min <= col_max; y--) arr[y][col_min] = value++; } for (int y = 0; y < arr.length; y++) { for (int x = 0; x < arr[y].length; x++) System.out.print((arr[y][x] < 10 ? " " : "") + arr[y][x] + " "); System.out.println(); } } } Endret 13. september 2013 av jonny Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå