Java初心者の競技プログラミング日記

Dvorak配列でjavaを書いてます

2018-03-01から1ヶ月間の記事一覧

【JavaFx入門】002.キーボード入力を取得する

キーボード入力を受け取って動作するJavaFxプログラムを書いてみたいと思います。ここでは、上下左右のキーでウィンドウ内の画像を操作する、RPG風のサンプルプログラムを紹介します。 package Blog; import java.io.File; import javafx.application.Applic…

【JavaFx入門】001.最も単純なJavaFxプログラム

最も単純だと思われるJavaFxプログラム(ウィンドウを表示するだけ)を書いてみたいと思います。 package Blog; import javafx.application.Application; import javafx.stage.Stage; public class Sample extends Application { @Override public void star…

ローグライクゲーム制作日記 2日目

現況 ・わりと形にはなってきた ・コードが煩雑としてきた 今日やったこと ・街マップを作った ・階段上り下りの処理を作った ・アイテム欄を作った 次やること ・ランダムダンジョン生成はとりあえず後回し・主人公のステータス充実 →メンバに剣、鎧なども…

ローグライクゲーム制作日記 1日目

目標 ・Java(JavaFx)でローグライクゲームを作る ・挫折する可能性が高いので、最低限のものでいいからとにかく完成させる 今日やったこと ・ゲームの外枠作り(マップ、キー入力、敵配置など) ・サンプルマップの中を探索できるようにした ・敵をランダ…

No.240 ナイト散歩

方針 ・問題文にある8座標にそれぞれ分岐していくような再帰関数を書く import static java.lang.System.*; import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); static int gx = sc.nextInt(); static int gy = sc.nextI…

AtCoder Regular Contest 031 B - 埋め立て

方針 ・地図は10*10なので全探索可能 ・埋め立てたときに複数の島を連結させられる海マスとは、少なくとも上下左右に二つの隣接した島マスを持っている必要がある ・地図を二次元配列に読み込む(このとき、島の総マス数を記録しておく。areaとする) ・上の…

ダンジョンを自動生成するアルゴリズム

ローグライクゲームに出てくるようなダンジョンを自動で生成するアルゴリズムを作ってみました。 生成例 ソースコード package Blog; import java.util.*; import static java.lang.System.*; public class Blog { //ダンジョンの大きさ static int h = 20; …

AtCoder Beginner Contest 092

A - Traveling Budget ans = Math.min(a,b) + Math.min(c,d); B - Chocolate import static java.lang.System.*; import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int n = …

スタックを用いた深さ優先探索

深さ優先探索は再帰関数を用いることでも実現できますが、今回はスタックを使って実装してみようと思います。ちなみに、深さ優先探索ではスタックというデータ構造(後入れ先出し)を使うのに対して、幅優先探索ではキューというデータ構造(先入れ先出し)…

ラムダ式の使いかたメモ

ラムダ式の使いかたを雑然とメモしていく記事です。 リスト、マップを出力する list.forEach(e -> out.println(e)); //リストを回して出力 map.forEach((key,value) -> out.println(key+" "+value); //マップを回して出力 とくにマップを出力するときには便…

『スッキリわかるJava入門』を読んだ

スッキリわかるJava入門 第2版 (スッキリシリーズ)作者: 中山清喬,国本大悟出版社/メーカー: インプレス発売日: 2014/08/07メディア: 単行本(ソフトカバー)この商品を含むブログ (19件) を見る 経緯と動機 実をいうと僕はJava学習を一度挫折している。Java…

AtCoder Beginners Selection

AtCoder Beginners Selectionの問題を解いてみました。全十問。AtCoder Beginners Selection - AtCoder Beginners Selection | AtCoder PracticeA - はじめてのあっとこーだー(Welcome to AtCoder) import java.util.*; import static java.lang.System.*;…

マップを値でソートする方法

マップを値でソートする方法については以前記事にしたのだけれども、マップを値でソートするメソッド - Java初心者の競技プログラミング日記あまりに冗長すぎるのでもっと短く書ける方法を探した。見つかった。 //昇順 map = map.entrySet().stream() .sorte…

自作クラスの入ったリスト・配列をソートする方法

まずはリスト。 class Point { int x; int y; char color; Point(int a, int b, char c) { this.x = a; this.y = b; this.color = c; } int getX() { return this.x; } int getY() { return this.y; } char getColor() { return this.color; } } クラスPoint…

AtCoder Beginner Contest 091

A - Two Coins A+B>=C ? "Yes":"No" B - Two Colors Card Game import java.util.*; import static java.lang.System.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { HashMap<String,Integer> map = new Has</string,integer>…

No.351 市松スライドパズル

逆シミュレーションする。求めたいのは「最終的に左上のマスが何色であったか」なので、「最終盤面の左上のマスは、最初の盤面のどの位置から運ばれてきたか」を考える。最終盤面の左上のマスの座標をx=0,y=0とおく。操作を後ろから順に行っていって、Rの番…

二分探索

二分探索は、ソートされた配列の中から、特定の要素を高速で見つけ出すアルゴリズムである。線形探索(先頭から末尾まで順番に判定していく)とは桁違いの速さで、具体的には、要素数1000000のとき線形探索では1000000回の判定が必要なのに対して、二分探索…

再帰関数入門・迷路探索編

再帰関数を用いて迷路を探索し、スタートからゴールにたどりつけるかどうかを判定する。使用するのは以下の問題。A - 深さ優先探索 import java.util.*; import static java.lang.System.*; public class Blog { static Scanner sc = new Scanner(System.in)…

ArrayDequeとLinkedList

基本的にはArrayDequeとLinkedListのどちらも、キュー・スタックとして使えるようだ。先頭に挿入:addFirst 末尾に挿入:addLast先頭を取得:getFirst 末尾を取得:getLast先頭を取得して削除:removeFirst 末尾を取得して削除:removeLastここまではArrayDe…

AtCoder Beginner Contest 090

A - Diagonal String s1.substring(0,1) + s2.substring(1,2) + s3.substring(2,3)追記:s1.charAt(0) + s2.charAt(1) + s3.charAt(2) のほうがたぶん速い(コードを書くにしても動かすにしても)。 B - Palindromic Numbers A以上B以下の値をすべて、このブ…

No.8 N言っちゃダメゲーム

n=20,k=4の場合を考えてみることにする。他のかたの解説にもある通り、先攻が勝つためには最後のターンでn-1(ここでは19)を言うのが望ましい。なぜなら、先攻がn-1を言ったとき、次に後攻はn-1にkを足した値(kは1以上)を言わなければならず、必ずn以上(…

再帰関数入門・全探索編

ビット全探索でやった内容(ビット全探索 - Java初心者の競技プログラミング日記)を、 再帰関数でもやってみようという試み。 import java.util.*; import static java.lang.System.*; public class Test { static Scanner sc = new Scanner(System.in); pu…

再帰関数入門・全列挙編

競技プログラミングをそれなりに続けてきたが、いまだに再帰関数について全く理解していないので、ここら辺で一つ学んでおこうと思い、この記事を書くことにした。学習に使うのは以下の問題である。 C - Brute-force Attack要は、「a,b,c」を並べて作ること…

AtCoder Beginner Contest 089

A - Grouping 2 import java.util.*; import static java.lang.System.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int n = sc.nextInt(); out.println(n/3); } } 3で割って終わり。こう…

eclipseでJavaFx(メモ)

筆者の環境 ・win7 ・pleiades oxygen ・scene builder【導入編】 ・SceneBuilderでfxmlファイルを開こうとすると「failed to launch jvm」のエラーが出る →このページ(JavaFX Scene Builder 1.x Archive)からダウンロードしたscenebuliderを使う【キーイ…