Võrgurakendused I / Programmeerimise põhikursus
Started By Catherinka, июн 01 2007 14:34
1046 ответов в этой теме
#901
Отправлено 27 января 2011 - 14:39
Infern0,
возможно, я код писал в не очень трезвом состоянии, и вообще, я не претендую на звание программиста
тема такая, что в последнем ноде поле nextnode будет иметь значение null. Суть моего кода такова, что дойдя до нода, который будет ссылаться на следующий нод, у которого в свою очередь в поле nextnode будет стоять null, он этот следующий нод добавляет в новый список, а в текущем меняет значение поля nextnode на null.
Я щас глянул, и действительно, цикл в данной реализации будет прогоняться только один раз, возможно нужно ещё какой-то флаг добавить, который будет запускать полный цикл снова, но мне влом. Сразу после экзамена у меня ещё крутилось в голове то, что я написал, и судя по результатам, преподу это понравилось. Сейчас уже не помню.
И вообще, я из этой темы ухожу, т.к. оба сабжевых премета наконец-то сдал
возможно, я код писал в не очень трезвом состоянии, и вообще, я не претендую на звание программиста
тема такая, что в последнем ноде поле nextnode будет иметь значение null. Суть моего кода такова, что дойдя до нода, который будет ссылаться на следующий нод, у которого в свою очередь в поле nextnode будет стоять null, он этот следующий нод добавляет в новый список, а в текущем меняет значение поля nextnode на null.
Я щас глянул, и действительно, цикл в данной реализации будет прогоняться только один раз, возможно нужно ещё какой-то флаг добавить, который будет запускать полный цикл снова, но мне влом. Сразу после экзамена у меня ещё крутилось в голове то, что я написал, и судя по результатам, преподу это понравилось. Сейчас уже не помню.
И вообще, я из этой темы ухожу, т.к. оба сабжевых премета наконец-то сдал
www.last.fm/user/archieb0ld
Когда я перестану пить...совершенно, все скажут: "Как же он хорош! Какая милашка!" © НаиВ
Когда таким, как ты сейчас, был я, таких, как я сейчас, не слушал. © Тараканы
Когда я перестану пить...совершенно, все скажут: "Как же он хорош! Какая милашка!" © НаиВ
Когда таким, как ты сейчас, был я, таких, как я сейчас, не слушал. © Тараканы
#904
Отправлено 14 сентября 2011 - 18:43
Ахтунг! Диверсия)
Файл Main.java
Файл Board.java
Файл Main.java
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; public class Main { private static final int[] BEST_MOVES = {5, 1, 3, 7, 9}; private static final String[] WIN_OR_PREVENT_PATTERNS = {"-1.-1|.-1-1|-1-1.", "1.1|.11|11."}; private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); private static PrintWriter writer = new PrintWriter(System.out, true); private static Board board = new Board(); public static void main(String[] args) { try { while (!board.isGameFinished()) { writer.println("please make your turn!(Number from 1-9)"); int input = readMove(reader.readLine()); if (input < 1 || input > 9 || !board.makeTurn(1, input)) { continue; } while (!board.isGameFinished() && !board.makeTurn(-1, calculateComputerMove())) ; writer.println(board); } if (board.hasWinner()) { writer.println("Congratulations to player " + board.getWinner()); } else { writer.println("Draw game!"); } } catch (IOException e) { writer.println("unable to read input"); } finally { try { writer.close(); reader.close(); } catch (IOException ignore) { } } } private static int calculateComputerMove() { int move = winOrPreventPlayerWin(); if (move != 0) { return move; } for (int bestMove : BEST_MOVES) { int token = board.getToken(bestMove); if (token == 0) return bestMove; } int result = (int) (Math.random() * 10); return result > 0 ? result : 1; } private static int winOrPreventPlayerWin() { for (int[] row : board.winningRows) { String situation = board.getSituation(row); for (String pattern : WIN_OR_PREVENT_PATTERNS) { if (situation.matches(pattern)) { for (int index : row) { if (board.getToken(index) == 0) { return index; } } } } } return 0; } private static int readMove(String userInput) { try { return Integer.parseInt(userInput); } catch (NumberFormatException e) { return 0; } } }
Файл Board.java
import java.util.HashMap; import java.util.Map; public class Board { public static final String WINNER_X = "111"; public static final String WINNER_O = "-1-1-1"; public static final Map<Integer, String> PLAYER_TOKEN = new HashMap<Integer, String>() { { put(1, "X"); put(-1, "O"); put(0, " "); } }; public int[][] winningRows = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {1, 4, 7}, {2, 5, 8}, {3, 6, 9}, {1, 5, 9}, {3, 5, 7}}; private final int[] board = new int[9]; public boolean makeTurn(int player, int cell) { int s = getToken(cell); if (s != 0) { return false; } board[--cell] = player; return true; } public int getToken(int cell) { return board[--cell]; } public boolean isGameFinished() { return hasWinner() || isNoMoreSpace(); } public String getWinner() { for (int[] winningRow : winningRows) { String combination = getSituation(winningRow); if (WINNER_O.equals(combination)) { return "O"; } if (WINNER_X.equals(combination)) { return "X"; } } return ""; } public String getSituation(int[] winningRow) { String situation = ""; for (int i : winningRow) { situation += getToken(i); } return situation; } public boolean hasWinner() { return !getWinner().isEmpty(); } private boolean isNoMoreSpace() { boolean result = true; for (int s : board) { result = result && s != 0; } return result; } @Override public String toString() { String result = "|"; for (int i = 1; i <= board.length; i++) { int token = getToken(i); result += PLAYER_TOKEN.get(token) + "|"; if (i % 3 == 0) { result += "\n" + (i != 9 ? "|" : ""); } } return result; } }
Сообщение изменено: GGr (14 сентября 2011 - 18:50 )
#912
Отправлено 16 октября 2011 - 18:38
Ищу 2е задание по Programmeerimise põhikursus http://www.lambda.ee...x.php/Scriptiti
#917
Отправлено 20 октября 2011 - 18:30
Zentso, если ты хочешь использовать его данные, то очевидно тебе надо использовать те айдишки, которые там присутствуют =)
<title type='text'>083027IABB</title> может быть вытащен о айдишке <id>https://spreadsheets...asic/iow8x</id>
<title type='text'>083027IABB</title> может быть вытащен о айдишке <id>https://spreadsheets...asic/iow8x</id>
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен
Joga Bonito!
Joga Bonito!
#919
Отправлено 25 октября 2011 - 13:25
LuXuRy,GGr собирался код в теме выложить =) видимо он завис
А вообще я за то, чтобы все все сами решали =) Девочки программисты конечно хорошо, но блин =) вы же не только для того чтобы кофе делать и любоваться вами созданы
А вообще я за то, чтобы все все сами решали =) Девочки программисты конечно хорошо, но блин =) вы же не только для того чтобы кофе делать и любоваться вами созданы
Сообщение изменено: shb (25 октября 2011 - 13:26 )
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен
Joga Bonito!
Joga Bonito!
#920
Отправлено 25 октября 2011 - 14:34
shb,
серьёзно?))...мне ещё детей рожать в муках, а ты меня ещё хочешь код заставить писать!
а вообще я зависла на сортировке, и не представляю, что дальше делать.
серьёзно?))...мне ещё детей рожать в муках, а ты меня ещё хочешь код заставить писать!
а вообще я зависла на сортировке, и не представляю, что дальше делать.
А если наступил ноябрь, а рядом кто-то до сих пор терпит ваш скверный характер и выжимает по утрам фреш на двоих, значит этот ноябрь, черт возьми, удался.
#922
Отправлено 25 октября 2011 - 17:19
Даю бесплатные консультации красивым девушкам по месту их проживания. Консультирую по любым предметам
Могу и с сортировкой помочь =) А потом хоть рожайте =))
Могу и с сортировкой помочь =) А потом хоть рожайте =))
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен
Joga Bonito!
Joga Bonito!
#930
Отправлено 07 декабря 2011 - 23:22
Smooth, а вот черт его знает. Вообще ему третью-то домашку сдало всего пара человек, да и времени у нас уже не осталось. Куда четвертую-то пихать?
Насчет того, можно ли сдать на сессии - тоже непонятно. Можешь попробовать ему написать через мудл, мне ответил. Через две с половиной недели >_<
Насчет того, можно ли сдать на сессии - тоже непонятно. Можешь попробовать ему написать через мудл, мне ответил. Через две с половиной недели >_<