pontz_rwのブログ

プログラミング等の備忘録

LIKE と SIMILAR TO

sql

文字列が指定されたパターンと一致するかどうかを判断するには、LIKE や SIMILAR TO を使用します。 次のSamplesテーブルを使ってみていきましょう。 str foo bar foobar Foo Bar Foobar FOO BAR FOOBAR -- サンプルデータ DROP TABLE IF EXISTS Samples ; C…

Markdown記法

Markdown は文章を記述するための記法の一つです。 このブログの記事も普段から Markdown記法を用いて作成されていますが、この機会に簡単にまとめてみました。 Markdwon記法 複数の記法が利用できる場合もあります。 段落 段落は空行によって分けられます。…

INTERSECTとEXCEPT

sql

UNION (和集合) を勉強したついでに、INTERSECT (積集合) と EXCEPT (差集合) についても学んでいきます。 これら2つは UNION と同様に、2つのテーブルから1つのテーブルを出力します。2つのテーブルは列数と各列の型を揃える必要があります。 INTERSECT INT…

小計、合計行を出力する

sql

小計行や合計行を出力したい場合に ROOLUP を使用できます。 例 次のようなデータを使って ROLLUP の動作を見ていきます。 SELECT sale_id, area_id, amount FROM (VALUES ('S001', 'A001', 100), ('S001', 'A002', 150), ('S001', 'A003', 100), ('S002', '…

UNION と UNION ALL の違い

sql

どっちがどっちだかよく忘れてしまうので、まとめます。 結論から言うと、UNION ALL は重複行を許しますが、UNION は除外します。 UNIONとは UNION は2つのテーブルを結合して1つのテーブルを生成します。結合するテーブルは、次の条件を満たす必要がありま…

「賢者の石」によるジェム稼ぎ

有名な方法ですが、ジェムを稼ぐ方法として「賢者の石」をジェム還元する方法があります。 賢者の石が作成できない時点では、メイプルデルタの木を伐採して獲得した素材をジェム還元していました。 メイプルデルタ「香る蜜木の森」へ移動 すぐに直前のマップ…

Ruby on Rails Tutorial のナビゲーションバーを Bootstrap 4 で作る

Ruby on Rails Tutorialの 5.1.1 ナビゲーション では、Bootstrap 3 を用いてナビゲーションバーを作成しています。2018年12月現在、Bootstrap 4 が最新となります。 バージョンの違いにより、ナビゲーションバーがうまく表示されないため、以下では、Bootst…

ALDS1_1_A: 挿入ソート

問題 挿入ソート | アルゴリズムとデータ構造 | Aizu Online Judge ソートに関する問題 解答 問題文に記載されている挿入ソートのアルゴリズムを実装します。出力は、ソート前に 回と、各計算ステップの途中経過を 回の、合計 回行います。 C++ #include <iostream> us</iostream>…

Volume0: 0009

素数 | Aizu Online Judge 以下の素数の個数を求める問題です。 予めエラトステネスの篩を使用して素数のリストを作成しておき、各データセットに対して素数の個数を求めます。 Python # coding: utf-8 LIMIT = 999999 # 1 から LIMIT までのリスト # 素数(…

Volume0: 0008

4つの整数の和 | Aizu Online Judge 重複を許す組み合わせの数を求めます。 C++ を より求めることで、forループが三重で済みます。 #include <iostream> using namespace std; int n; int main() { while (cin >> n) { int count = 0; for (int a = 0; a <= 9; ++a) </iostream>…

Volume0: 0007

借金地獄 | Aizu Online Judge 以下の操作を 回繰り返せば良いです。 借金に利子を加える 1000未満を切り上げ C++ 借金の計算は以下の通りです。 借金に金利を加える 1000未満を切り上げするために、999を加える 1000で割って千の位未満の桁を飛ばす 1000を…

Volume0: 0006

文字列を逆順に出力 | Aizu Online Judge 文字列を逆順にする問題です。 文字列は文字の配列で表現されているので、配列を後ろから操作すれば良いです。 ただし、ほとんどの言語において、関数reverseで文字列を逆順にすることができます。 C++ 配列を後ろか…

Volume0: 0005

最大公約数と最小公倍数 | Aizu Online Judge 最大公約数と最小公倍数を求める問題です。 整数 に対して、最大公約数 と は、 という関係があります。 最大公約数は、ユークリッドの互除法を使って求めることができます。 C++ #include <iostream> using namespace std</iostream>…

Volume0: 0004

連立方程式 | Aizu Online Judge 連立方程式の解を求める問題です クラーメルの公式を利用します Python # coding: utf-8 while True: try: a, b, c, d, e, f = [int(i) for i in input().split()] detA = a * e - b * d detA1 = c * e - b * f detA2 = a * …

Volume0: 0003

正三角形 | Aizu Online Judge 三平方の定理を利用します 直角三角形の斜辺 と他の 辺 との関係は、 です C++ #include <iostream> using namespace std; int a, b, c, n; int main() { cin >> n; for (int i = 0; i < n; ++i) { cin >> a >> b >> c; // cを斜辺にする</iostream>…

AtCoder Beginner Contest 096

AtCoder Beginner Contest 096 A - Day of Takahashi 各月に対して、高橋の日になる月の数と日の数との組み合わせは 通りずつです 月 日において、 の場合、合計 日 の場合、合計 日 となります # coding: utf-8 a, b = [int(i) for i in input().split()] p…

AtCoder Beginners Selection

今更ですが、AtCoder Beginners Selectionの問題を解きました。 PracticeA - はじめてのあっとこーだー(Welcome to AtCoder) 入出力の確認です。 C++ #include <iostream> using namespace std; int main() { int a, b, c; string s; cin >> a; cin >> b >> c; cin ></iostream>…

Volume0: 0002

桁数 | Aizu Online Judge 数値の桁数を求める問題 解答 整数の桁数を求めるので、文字列に変換し、文字列の長さを求めれば良い while True: try: # 入力から2つの整数を受け取る a, b = [int(i) for i in input().split()] # 2つの整数を足し、文字列に変換…

Volume0: 0001

山の高さ | Aizu Online Judge ソートに関する問題 解答 リストを降順に並べ替えて、上から3つ切り出せば良い # 山の高さ10個のデータ mountains = [int(input()) for _ in range(10)] # 山の高さが高い順に3件分、ループで取り出す for height in sorted(mo…

Volume0: 0000

九九 | Aizu Online Judge 九九を出力する問題 解答 二重ループを利用する # 掛けられる数 i for i in range(1, 10): # 掛ける数 j for j in range(1, 10): # 九九を出力 print(f'{i}x{j}={i * j}') 一行で書く [print(f'{i}x{j}={i * j}') for i in range(1…

ITP1_10_D: Distance II

ミンコフスキー距離 | プログラミング入門 | Aizu Online Judge 数学に関する問題 解答 問題文で与えられた数式をコードにしていきます。 まず、xとyの距離をそれぞれ計算します。 次に、求めた距離をそれぞれp乗し、その合計を求めます。 そして、求めた合…

ITP1_10_C: Standard Deviation

標準偏差 | プログラミング入門 | Aizu Online Judge 数学に関する問題 解答1 問題文で与えられた数式をコードにしていきます。 # coding: utf-8 while True: n = int(input()) if n == 0: break s = list(map(float, input().split())) m = sum(s) / n a_2 …

ITP1_10_B: Triangle

三角形 | プログラミング入門 | Aizu Online Judge 数学に関する問題 三角形の面積 は、 $$ S = \frac{1}{2}ab\sin{C} $$ 辺 の長さは、 より、 $$ c = \sqrt{a^{2} + b^{2} - 2ab \cos{C}} $$ 高さ は、 より、 $$ h = \frac{2S}{a} $$ 解答 # coding: utf-…

ITP1_10_A: Distance

距離 | プログラミング入門 | Aizu Online Judge 2点間の距離を求める問題 2点間の距離は、 で求めることができます。 解答 # coding: utf-8 x1, y1, x2, y2 = map(float, input().split()) print(((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5)

ITP1_9_D: Transformation

文字列変換 | プログラミング入門 | Aizu Online Judge 文字列操作に関する問題 解答 入力値を分割する際の要素数や、文字列操作する際のインデックスに注意します。 # coding: utf-8 str = input() q = int(input()) for _ in range(q): line = input().spl…

ITP1_9_C: Card Game

カードゲーム | プログラミング入門 | Aizu Online Judge 解答 # coding: utf-8 n = int(input()) t = 0 h = 0 for _ in range(n): tc, hc = input().split() if tc > hc: t += 3 elif tc < hc: h += 3 else: t += 1 h += 1 print(t, h)

AtCoder Beginner Contest 001

abc001.contest.atcoder.jp A - 積雪深差 # coding: utf-8 H1 = int(input()) H2 = int(input()) print(H1 - H2) B - 視程の通報 問題文に従って条件分岐します。 m = int(input()) if 100 > m: print('00') elif 5000 >= m: print("{:02d}".format(m // 100…

ITP1_9_B: Shuffle

シャッフル | プログラミング入門 | Aizu Online Judge 文字列の切り取り、結合に関する問題 解答 インデックスに気を付けて文字列を操作します。 # coding: utf-8 while True: cards = input() if cards == '-': break m = int(input()) for i in range(m):…

ITP1_9_A: Finding a Word

単語の検索 | プログラミング入門 | Aizu Online Judge 指定された単語の数を出力する問題 解答 count()を使用することで、リスト内の指定の値を持つ要素の数を取得することができます。 # coding: utf-8 count = 0 W = input().lower() while True: T = inp…

ITP1_8_D: Ring

リング | プログラミング入門 | Aizu Online Judge 指定した文字列が含まれるかどうか判定する問題 解答1. 入力値を2倍 入力値と同じ内容の文字列を加えます。 inを使用し、文字列に指定した値があるかどうかを調べます。 # coding: utf-8 s = input() p = i…