雀魂の簡略化ルールによる麻雀和了判定
雀魂という麻将ゲームに興味を持ったユーザーが、複雑なルールを簡略化して新しい麻将を作りました。この新しいルールでは、1から9までの数値の牌を使用し、各数値の牌は4枚ずつ存在します。手札は14枚で構成され、和了の条件は以下の通りです。
14枚の牌の中に2枚同じ数値の牌(雀頭)が含まれていること。
雀頭を除いた残りの12枚の牌が、4つの順子または刻子で構成され ...
8月13日 17:18 投稿
PHPにおける再帰呼び出しの動作原理と実行フロー
再帰関数とは、自身を直接または間接的に呼び出す関数です。この呼び出しはスタック構造に基づき、関数が新たなスコープを積み重ねながら進み、終了条件(ベースケース)に到達すると、積まれた各呼び出し層が逆順に復帰していきます。
再帰の正しく動作するためには、以下の3要素が不可欠です:
ベースケース(終了条件):再帰を停止させる明確な条件
再帰ステップ ...
8月8日 16:23 投稿
Javaオブジェクト指向の核心:クラス設計、メモリ割り当て、およびメソッドの設計
クラスとオブジェクトの基本概念
Javaにおけるオブジェクト指向プログラミング(OOP)の基盤は、「クラス」と「オブジェクト」の関係を理解することにあります。
クラス:抽象的な概念であり、特定のグループに属する事物の設計図(テンプレート)として機能します。データ型としての役割も果たします。
オブジェクト:クラスという設計図から生成された具体的な実体(イ ...
8月7日 23:54 投稿
Python 基礎アルゴリズム練習問題集と実装解説
基礎制御構造と論理演算
プログラミングの基礎を固めるために、条件分岐と循環構造を用いた典型的な問題を取り上げます。まずは、特定の数字を組み合わせて条件に合致するパターンを抽出する練習です。
1. 重複のない三位数の生成
1 から 4 までの数字を用いて、重複しない桁を持つ三位数を全て列挙します。
digits = [1, 2, 3, 4]
count = 0
for i in digits:
for j i ...
7月25日 19:38 投稿
C言語の核心概念:関数・データ型・構造体・ポインタの実践的理解
C言語を学ぶ上で最も重要なのは、抽象的な文法ではなく「メモリと値の関係性」を意識した思考習慣です。以下に、数学的直感を基にしながら、実行時の挙動を正確に予測できるようになるための要点を再構成します。
1. 関数:入力と出力の明示的なマッピング
関数は「入力値から出力値を一意に導くルール」であり、数学の写像と同一視できます。Cでは型宣言がこの対応関係を ...
7月20日 18:14 投稿
JavaScript における無名再帰関数の実装手法
再帰はプログラミングの基本的なパターンの一つであり、名前付き関数による再帰は直感的で理解しやすいです。しかし、関数に名前を付けずに再帰処理を実現するにはどうすればよいでしょうか?たとえば、即時実行される無名関数内で自身を呼び出す、あるいは再帰ロジックを含むクロージャを返すようなケースです。ここでは、JavaScript の言語特性を活かした無名再帰の実装 ...
7月12日 16:08 投稿
電話番号からアルファベット組み合わせを生成するアルゴリズム
問題概要:
数字文字列(2〜9のみ)を入力として、該当するすべてのアルファベット組み合わせを返す。結果は任意の順序で出力可能。
電話ボタンの数字とアルファベットの対応関係は以下の通り(1は対応なし):
2 -> "abc"
3 -> "def"
4 -> "ghi"
5 -> "jkl"
6 -> "mno"
7 -> "pqrs"
8 -&g ...
7月8日 21:49 投稿
再帰と反復で学ぶ二分木の三種巡回戦略
二分木を扱う際に必須となる「先行順」「中間順」「後行順」の三巡回について、再帰と反復(スタック利用)の両アプローチで実装を整理する。
先行順巡回(Pre-order Traversal)
ノード → 左部分木 → 右部分木の順で値を収集する。
再帰実装(Python)
from typing import Optional, List
class TreeNode:
def __init__(self, val: int = 0,
left ...
7月5日 19:31 投稿
マージソートのアルゴリズム解説と応用例
マージソート(Merge Sort)の基本概念
マージソートは、分割統治法(Divide and Conquer)に基づいた効率的なソートアルゴリズムです。主な特徴は以下の通りです。
再帰的な構造:配列を半分に分割し、それぞれをソートした後にマージ(結合)します。
外部ソート:マージの過程で一時的な配列を使用し、順序を整えます。
安定ソート:同じ値の要素の相対的 ...
7月4日 20:45 投稿
C言語による基礎アルゴリズム実装:成績評価・桁和計算・べき乗・素数探索・ハノイの塔・組み合わせ・最大公約数
本稿では、C言語を用いた代表的なアルゴリズム課題を再構成し、各関数の設計意図と改善点を技術的に解説します。コード例は意図的に構造・変数名・制御フローを変更し、教育的かつ実用的な書き直しを行っています。
成績マッピング関数(文字列評価)
整数スコアを10点刻みで分類し、対応する等級記号を返す関数です。入力範囲に応じてA~Eの5段階評価を実施します。
#inc ...
6月14日 23:58 投稿