「整数」を含む日記 RSS

はてなキーワード: 整数とは

2009-01-29

http://anond.hatelabo.jp/20090129193722

分数同士の割り算の前に、分数を整数で割る、整数を分数で割るというのをやると理解しやすいかも。

1/2÷3=1/6

4÷2/5=10

といったのが理解できれば、そこから分数÷分数に進むのもあと一歩。

もっと基本的に、整数同士の割り算の結果が分数になるということからやり直すと割った数が分母にくるというのが改めて実感できるかな

2008-12-23

今年の情報オリンピック予選のこの問題、

冬の寒いある日,JOI太郎君は広場にはった薄氷を割って遊ぶことにした.広場は長方形で,東西方向に m 個,南北方向に n 個,つまり, m × n の区画に区切られている.また,薄氷が有る区画と無い区画がある. JOI太郎君は,次のルールにしたがって,薄氷を割りながら区画を移動することにした.

薄氷があるどの区画からも薄氷を割り始めることができる.

東西南北のいずれかの方向に隣接し, まだ割られていない薄氷のある区画に移動できる.

移動した先の区画の薄氷をかならず割る.

JOI太郎君が薄氷を割りながら移動できる区画数の最大値を求めるプログラムを作成せよ.ただし, 1 ≦ m ≦ 90,1 ≦ n ≦ 90 である.与えられる入力データでは,移動方法は20万通りを超えない.

入力

入力はn+2行ある. 1 行目には整数 m が書かれている. 2 行目には整数 n が書かれている. 3 行目から n+2 行目までの各行には、0 もしくは 1 が, 空白で区切られて m 個書かれており,各区画に薄氷があるか否かを表している.北から i 番目,西からj番目の区画を (i,j) と記述することにすると (1 ≦ i ≦ n, 1 ≦ j ≦ m),第 i+2 行目の j 番目の値は,区画 (i,j) に薄氷存在する場合は 1 となり,区画 (i,j) に薄氷存在しない場合は 0 となる.

のいい最適化の方法が思いつかない。

一応プログラムは書けたけど90*90の時にまともに動く気がしない。

単なる深さ優先検索。

array = [
  [1, 1, 1, 0, 1],
  [1, 1, 0, 0, 0],
  [1, 0, 0, 0, 1]
]
result = []
def get(x, y):
  if (0 <= x < len(array)) and (0 <= y < len(array[0])):
    return array[x][y]
  else:
    return -1
def func(x, y, route):
  route = route[:]
  # print x, y, get(x, y)
  if get(x, y) == 0:
    result.append(route)
    return
  if (x, y) in route:
    return
  route.append((x, y))
  if get(x - 1, y ) >= 0: func(x - 1, y , route)
  if get(x , y + 1) >= 0: func(x , y + 1, route)
  if get(x + 1, y ) >= 0: func(x + 1, y , route)
  if get(x , y - 1) >= 0: func(x , y - 1, route)
func(0, 0, [])
for i in result:
  print i

2008-10-30

http://anond.hatelabo.jp/20081025202001

いまさらだがFizzBuzz

1から100まで、3の倍数5の倍数云々って、全部定数の計算じゃね?

というところに気付き、自称メタプログラマー(略してメタグラマー)俺の血が騒いだ。

定数計算なら、それは実行時ではなくコンパイル時に行なわれるべきだ……。

というわけでC++テンプレートメタプログラミング召喚。

#include <iostream>

const int FIZZ_NUM = 3;
const int BUZZ_NUM = 5;
const int BEGIN_NUM = 1;
const int END_NUM = 101;

template<int N> struct Fizz {
    enum {PRINT = 0, NEXT = N + 1};
    static void print() {}
};

template<int N> struct Buzz {
    enum {PRINT = 0, NEXT = N + 1};
    static void print() {}
};

template<int N, bool ForB> struct Number {static void print() {std::cout << N;}};

template<> struct Fizz<FIZZ_NUM> {
    enum {PRINT = 1, NEXT = 1};
    static void print() {std::cout << "Fizz";}
};

template<> struct Buzz<BUZZ_NUM> {
    enum {PRINT = 1, NEXT = 1};
    static void print() {std::cout << "Buzz";}
};

template<int N> struct Number<N, true> {static void print() {}};

template<int N, int F, int B> struct FizzBuzz {
    static void print() {
        typedef ::Fizz<F> Fizz;
        typedef ::Buzz<B> Buzz;
        
        Fizz::print();
        Buzz::print();
        Number<N, Fizz::PRINT || Buzz::PRINT>::print();
        std::cout << std::endl;
        
        FizzBuzz<N + 1, Fizz::NEXT, Buzz::NEXT>::print();
    }
};

template<int F, int B> struct FizzBuzz<END_NUM, F, B> {static void print() {}};

int main(int argc, char **argv)
{
    FizzBuzz<BEGIN_NUM, 1, 1>::print();
    return 0;
}

ifなし%なしループ系なし、しかも実行時オーバーヘッドなし!(多分)

あ、これを見て理解する人間オーバーヘッドは無視ね。

ああ、久しぶりにC++を触ったけど、やっぱC++テンプレートってダメダメだな。20世紀の遺物といわざるを得ない。

君がもし21世紀モテイケメンメタグラマーなら、21世紀プログラミング言語D言語を使うべきだ!

驚くべきことに、D言語コンパイル時に関数が実行でき、その結果をソースコードとして取り込める!

ただし実行できるのは簡単な関数だけだけど……。

以下、それを使ったD言語によるメタプログラミング的実装。

import std.stdio;

// これでFizzBuzzを全部出力するコードを作るぜ!
string makeFizzBuzzCode() {
    string code;
    for(int i = 1; i <= 100; ++i) {
        // 効率? コンパイル時にそんな配慮は要らん!
        if(i % 3 == 0 &amp;&amp; i % 5 == 0) {
            code ~= "writefln(\"FizzBuzz\");\n";
        } else if(i % 3 == 0) {
            code ~= "writefln(\"Fizz\");\n";
        } else if(i % 5 == 0) {
            code ~= "writefln(\"Buzz\");\n";
        } else {
            code ~= "writefln(" ~ static_itoa(i) ~ ");\n";
        }
    }
    return code;
}

int main(string[] args) {
    // おまけで生成されたコードも見せるよ。
    pragma(msg, makeFizzBuzzCode());
    
    // 生成したコードを埋め込む。コピペみたいな感覚
    mixin(makeFizzBuzzCode);
    return 0;
}

// 以下ユーティリティ。このぐらい標準で欲しいな……。

/// 整数文字列変換(コンパイル時)
string static_itoa(int n) {
    if(n == 0) {
        return "0";
    }
    
    // 10で割りながら余りを文字にして追加。桁が逆転した文字列になる。
    string s;
    for(; n; n /= 10) {
        s ~= ("0123456789")[n % 10];
    }
    
    // 桁位置を正常にする。相変わらず効率無視。
    return static_reverse(s);
}

/// 配列リバースコンパイル時)
/// 実行時ならarray.reverseが使えるんだけどね……。
T[] static_reverse(T)(T[] s) {
    T[] result;
    foreach_reverse(c; s) {
        result ~= c;
    }
    return result;
}

// 心配なので静的ユニットテスト(笑)
unittest {
    static assert(static_itoa(0) == "0");
    static assert(static_itoa(10) == "10");
    static assert(static_itoa(999) == "999");
    static assert(static_itoa(9999) == "9999");
    static assert(static_itoa(12345) == "12345");
    static assert(static_itoa(314159265) == "314159265");
}

コンパイル結果

$ dmd -unittest fizz_buzz.d
writefln(1);
writefln(2);
writefln("Fizz");
writefln(4);
writefln("Buzz");
writefln("Fizz");
writefln(7);
writefln(8);
writefln("Fizz");
writefln("Buzz");
writefln(11);
writefln("Fizz");
writefln(13);
writefln(14);
writefln("FizzBu(ry

出力結果は略。

さすがD言語C++JavaC#にできない事を平然とやってのけるッ

そこにシビれる!あこがれるゥ!

というか、

writefln(1);
writefln(2);
writefln("Fizz");
writefln(4);

もうwritefln(出力関数)要らなくね?

修正。

// これでFizzBuzzを全部出力するぜ!
string makeFizzBuzzCode() {
    string code;
    for(int i = 1; i <= 100; ++i) {
        // 効率? コンパイル時にそんな配慮は要らん!
        if(i % 3 == 0 &amp;&amp; i % 5 == 0) {
            code ~= "FizzBuzz\n";
        } else if(i % 3 == 0) {
            code ~= "Fizz\n";
        } else if(i % 5 == 0) {
            code ~= "Buzz\n";
        } else {
            code ~= static_itoa(i) ~ "\n";
        }
    }
    return code;
}

int main(string[] args) {
    // もうコンパイル時のメッセージしか出さない。(笑)
    pragma(msg, makeFizzBuzzCode());
    return 0;
}

コンパイル結果。

$ dmd -unittest fizz_buzz.d
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBu(ry

実行するまでもなく結果が出力された。つまり実行時間ゼロ、ということは……

世 界 最 速

以上、世界最速なD言語宣伝でした。

みんな使おうD言語

D言語リファレンス日本語

http://www.kmonos.net/alang/d/1.0/index.html(1.0。こっちの方が安定してる?)

http://www.kmonos.net/alang/d/2.0/index.html(もっと凄い2.0)

D言語本家配布元(無料コンパイラが入手できます)

http://www.digitalmars.com/

それにしても、ちゃんとD言語シンタックスハイライトを実装しているはてなは偉い。(笑)

2008-10-27

http://anond.hatelabo.jp/20081027003643

8進数において

a+b+c+d+eが7の倍数のとき 

整数abcde

=10000a+1000b+100c+10d+e

(7777a+a)+(777b+b)+(77c+c)+(7d+d)+e

=(a+b+c+d+e)+7(1111a+111b+11c+d)

よってa+b+c+d+eが7の倍数のとき8進数abcdeは7の倍数

全部足して3の倍数だったら3の倍数

a+b+c+d+eが3の倍数のとき 

整数abcde

=10000a+1000b+100c+10d+e

(9999a+a)+(999b+b)+(99c+c)+(9d+d)+e

=(a+b+c+d+e)+3(3333a+333b+33c+3d

よってa+b+c+d+eが3の倍数のとき整数abcdeは3の倍数

2008-10-12

[][]Grass

Table of Contents: ||||||

オープンソースソフトウェアGISOpen Source software and GISOpen Source software and GIS 1 (6)
オープンソース概念Open Source concept1 (2)
オープンソースGISとしてのGRASSGRASS as an Open Source GIS3 (2)
ノースカロライナサンプルデータセットThe North Carolina sample data set 5 (1)
この本の読み方How to read this book5 (2)
GIS概念GIS conceptsGIS concepts 7 (14)
一般的なGIS原理General GIS principles 7 (6)
地理空間データモデルGeospatial data models 7 (4)
GISデータシステムの構成Organization of GIS data and system11 (2)
機能functionality
地図投影法と座標系Map projections and coordinate systems 13 (8)
地図投影原理Map projection principles13 (3)
一般的な座標系とdatumsCommon coordinate systems and datums 16 (5)
GRASSをはじめようGetting started with GRASSGetting started with GRASS 21 (32)
第一歩First steps21 (16)
GRASSダウンロードインストールDownload and install GRASS 21 (2)
データベースコマンド構造Database and command structure 23 (3)
GRASS6のためのグラフィカルユーザインタフェイス: Graphical User Interfaces for GRASS 6: 26 (1)
QGISgis.mQGIS and gis.m
ノースカロライナを用いてGRASSを開始Starting GRASS with the North Carolina 27 (3)
データセットdata set
GRASSデータディスプレイ3D可視化GRASS data display and 3D visualization30 (4)
プロジェクトデータ管理Project data management34 (3)
新しいプロジェクトGRASSを開始Starting GRASS with a new project37 (7)
aのための座標系の定義Defining the coordinate system for a 40 (4)
新しいプロジェクトnew project
空間投影されていないxy座標系Non-georeferenced xy coordinate system 44 (1)
座標系の変換Coordinate system transformations44 (9)
座標系のリストCoordinate lists 45 (2)
ラスタベクトル地図投影Projection of raster and vector maps 47 (1)
GDAL/OGRツールで、再投影Reprojecting with GDAL/OGR tools 48 (5)
GRASSデータモデルデータの交換GRASS data models and data exchange53 (30)
ラスタデータRaster data54 (16)
GRASS2Dの、3DラスタデータモデルGRASS 2D and 3D raster data models 54 (2)
領域の統合と境界Managing regions and boundaries raster map resolution
ジオコードされたラスタデータインポートImport of georeferenced raster data58 (8)
スキャンされた歴史地図インポートとジオコーディングImport and geocoding of a scanned66 (3)
ラスタデータエクスポートRaster data export 69 (1)
ベクトルデータVector data70 (13)
GRASSベクトルデータモデルGRASS vector data model70 (3)
ベクトルデータインポートImport of vector data73 (5)
xy CAD描画のための座標変換Coordinate transformation for xy CAD drawings 78 (2)
ベクトルデータエクスポートExport of vector data80 (3)
ラスタデータを使うWorking with raster data 83 (86)
ラスタ地図を表示、管理Viewing and managing raster maps 83 (22)
ラスタデータの表示と、カラーテーブルの割り当てDisplaying raster data and assigning a color table 83 (3)
ラスタ地図に関するメタデータを管理Managing metadata of raster maps 86 (2)
ラスタ地図クエリプロファイルRaster map queries and profiles88 (2)
ラスタ地図統計Raster map statistics90 (1)
ラスタ地図ズームと、部分集合の生成Zooming and generating subsets from91 (1)
簡単なラスタ地図の生成Generating simple raster maps92 (2)
再分類と再スケーリングReclassification and rescaling of94 (3)
ラスタ地図raster maps
ラスタ地図タイプの記録と値の置換Recoding of raster map types and value replacements 97 (2)
カテゴリベルの割り当てAssigning category labels99 (4)
マスキングとノーデータ値の取り扱いMasking and handling of no-data values 103(2)
ラスタ地図の計算Raster map algebra 105(10)
整数と浮動小数点データInteger and floating point data107(1)
基本的な計算Basic calculations 108(1)
“if"状態を使うWorking with ``if'' conditions109(1)
r.mapcalcのNULL値の取り扱いHandling of NULL values in r.mapcalc 110(1)
r.mapcalcでMASKを作成Creating a MASK with r.mapcalc 111(1)
特別なグラフ演算子Special graph operators112(1)
相対的座標での近傍演算Neighborhood operations with relative coordinates113(2)
ラスタデータの変換と内挿Raster data transformation and interpolation 115(11)
離散的ラスタデータ自動ベクトルAutomated vectorization of discrete raster data115(3)
連続フィールドの等値線の描画を生成Generating isolines representing continuous fields 118(1)
ラスタデータのリサンプリングと内挿Resampling and interpolation of raster data 119(5)
ラスタ地図オーバーレイマージOverlaying and merging raster maps 124(2)
ラスタデータの空間分析Spatial analysis with raster data126(29)
近傍分析とクロスカテゴリー統計Neighborhood analysis and cross-category statistics126(7)
ラスタフィーチャのバッファリングBuffering of raster features 133(2)
コストサーフェイスCost surfaces135(5)
地勢と分水界分析Terrain and watershed analysis 140(13)
ランドスケープ構造解析Landscape structure analysis 153(2)
ランドスケーププロセスモデリングLandscape process modeling 155(11)
文学的、地下水モデルHydrologic and groundwater modeling155(3)
浸食と宣誓証言モデルErosion and deposition modeling158(8)
ラスタベースモデルと解析に関するまとめFinal note on raster-based modeling and analysis166(1)
ボクセルデータを使うWorking with voxel data166(3)
ベクトルデータを使うWorking with vector data 169(94)
地図の表示とメタデータ管理Map viewing and metadata management169(4)
ベクトル地図を表示Displaying vector maps 169(3)
ベクトル地図メタデータ維持Vector map metadata maintenance172(1)
ベクトル地図属性管理とSQLサポートVector map attribute management and SQL support173(14)
GRASS6でのSQLサポートSQL support in GRASS 6 174(7)
サンプルSQLクエリ属性変更Sample SQL queries and attribute modifications 181(4)
地図再分類Map reclassification 185(1)
複数の属性があるベクトル地図Vector map with multiple attribute tables: layers 186(1)
ベクトルデータデジタルDigitizing vector data 187(5)
位相データデジタル化の一般原理General principles for digitizing topological data187(2)
GRASSでの対話的なデジタイジンInteractive digitizing in GRASS189(3)
ベクトル地図クエリ統計Vector map queries and statistics192(4)
地図クエリMap queries192(2)
ベクトルオブジェクトに基づくラスタ地図統計Raster map statistics based on vector objects194(2)
ポイントベクトル地図統計Point vector map statistics196(1)
幾何学操作Geometry operations196(20)
位相的な操作Topological operations 197(6)
バッファリングBuffering203(1)
フィーチャの抽出と境界のディゾルブFeature extraction and boundary dissolving204(1)
ベクトル地図を修理Patching vector maps 205(1)
ベクトル地図インターセクディングとクリッピングIntersecting and clipping vector maps206(3)
ベクトル幾何の変換と3Dベクトルの作成Transforming vector geometry and creating 3D vectors 209(2)
点からのコンベックスハルとトライアンギュレーションConvex hull and triangulation from points 211(1)
同じ位置の掘り出し物の複数のポイントFind multiple points in same location212(2)
一般的な多角形境界の長さLength of common polygon boundaries214(2)
ベクトルネットワーク分析Vector network analysis216(11)
ネットワーク分析Network analysis 216(5)
直線的な参照システム(LRS)Linear reference system (LRS)221(6)
ラスタへのベクトルデータ変化Vector data transformations to raster227(3)
空間的な内挿と近似Spatial interpolation and approximation230(19)
内挿方法を選択Selecting an interpolation method230(5)
RSTによる内挿と近似Interpolation and approximation with RST 235(2)
RSTパラメタの調整: テンションスムージングTuning the RST parameters: tension and smoothing 237(4)
RSTの精度を評価Estimating RST accuracy241(3)
セグメント化処理Segmented processing 244(3)
RSTとのトポグラフィー分析Topographic analysis with RST247(2)
ライダーポイントクラウドデータを使うWorking with lidar point cloud data249(8)
ボリュームに基づくは内挿Volume based interpolation 257(6)
3番目の変数の追加: 高度のある降水量Adding third variable: precipitation with elevation 258(3)
ボリュームとボリューム-時間内挿Volume and volume-temporal interpolation 261(1)
地球統計学とスプライGeostatistics and splines262(1)

2008-09-22

きょうおぼえたこと

"滑らかな整数"という物があるらしい(意味が分からない)

ネットで調べ物するときは重くてもPDF開いた方が良い

一部のはてな記法

gcdは最大公約数

pow(a,b)はaのb乗

mod(a,b)はaをbで割ったときの余り

N=pq (p,qは素数)を因数分解するには

{1,2,…,N-1}から適当にgcd(a,N)=1となるaを取る

aのNを法とした位数rを求める

aのNを法とした位数rを求めるには

f(x)=mod(pow(a,x),n)

としてf(x+kr)=f(x)となるrを求める(kは任意の自然数?)

rが偶数になるまでaを取るとこからやり直す

(偶数じゃないと下の式のpow()が整数にならないから)

p=gcd(pow(a,r/2)+1,N)

q=gcd(pow(a,r/2)-1,N)

p,qのいずれかがNでなければそれらが求めたい因数

らしい

で、rを求めるところがイマのコンピュータだと大変で、

Shorさんのアルゴリズムは量子PCでソレが出来てスゴイらしい

2008-09-18

[]君たちの大好きなJavaScriptテレビで動くんだぜ

Sony Japan|プレスリリース | 液晶テレビ<ブラビア>の情報閲覧機能「アプリキャスト」個人向けソフトウェア開発ツールを公開

早速見てみた。

API


JS言語仕様

http://www.sony.net/Products/Linux/Download/KDL-16M1_KDL-20M1_KDL-20J1_KDL-26J1_KDL-32J1_KDL-32F1_KDL-40F1_KDL-46F1_KDL-40V1_KDL-46V1_KDL-52V1_KDL-32JE1.html

ここからBRAVIAに搭載されてるJavaScriptインタプリタソースダウンロードできる。

まんまSpiderMonkey

つまりフルのJavaScript言語仕様サポートされてるってこと。

2008-08-29

http://anond.hatelabo.jp/20080825010326

こういうタイプの人が「ポインタとは整数である」とかのたもーて初心者をつぶすことがある。

C言語の講師にいませんでした?w

2008-08-12

http://anond.hatelabo.jp/20080812145332

俺も感じないな。

数式では記号だったから、数字にあんまり思い入れがない。

物理定数とかは、浮動小数点数表記で整数部分が複数桁になることがあんまりなかったのかも。

2008-05-03

世界のナベアツ問題に対する哲学的アプローチ

「3の倍数と3の付く数字だけアホになる」世界のナベアツ整数列においてどの程度アホになるかを判定する、所謂「世界のナベアツ問題」があり、どうやら死ぬほど続けていくと、限りなく100%に近い確率でアホになるようであるが、この問題に対しする数学的アプローチは理系の方々に任せ、数学が病的に出来ない私としては、この問題に対し哲学方面からのアプローチを試みたいと思う。

クレタ人のパラドクス」というのがある。

クレタ人は嘘つきだ」と(クレタ人の)エピメニデスが云った。
というもので、仮にこの命題が真だとすると、エピメニデスは嘘つきなので、『「クレタ人は嘘つき」』は嘘になるはずなのだが、本当のことを云っていることになり、矛盾が生じる。

逆に、この命題を偽とすれば『「クレタ人は嘘つき」』という発言は嘘になり、矛盾が生じる。

『「私は嘘つきだ」』という嘘をついたエピメニデスは正直者だ、ということになるのだ。

ここで、世界のナベアツパラドクスについて考えてみる。

つまり、「3の倍数と3の付く数字だけアホになる」と発言するナベアツは、この説明時に「アホ」にならなければならないのではないか、ということである。

ゲーデル不完全性定理によれば、『「事実(観測された事項)」が定理に合致する』ということをもって初めて「『証明』として完結することが出来る」ということから、ナベアツのアホについての説明はできないこととなる。

私が数学が嫌いな理由は、解が一つに収束することである。

世界のナベアツ問題」について、どのような回答をするか。

ニーチェなら、「ナベアツは死んだ」というだろう。

京極夏彦なら「世の中にはアホなナベアツなどありませんよ。アホだと感じるなら感じる者が無知なだけです。」というだろう。

村上春樹なら、「完璧なアホのナベアツなどといったものは存在しない。完璧絶望存在しないようにね。」というかもしれないし、

サン・テグジュペリなら「大人は、みんなはじめはアホだった。」というだろう。

問いに対して、バラエティーに富んだ答えがある、哲学的な命題を愛して止まない。

そして、「2の倍数と2が付く数字のときに感じる滝川クリステル企画の実現を切に願う。

2拍子で喘いで、20から29までラッシュ、みたいな。

2008-05-01

問5

0から7の数字を使って4桁の整数を作るとき3の倍数と3の付く数は幾つ有るか?

2008-04-15

http://anond.hatelabo.jp/20080415082213

日本語はややこしいと思う。

例えば数学の文章問題。

「こう問われたらこう解きなさい」というお約束事はわかる。

だが、それは暗黙の了解を多分に含むお約束事を前提にみんなが訓練されているからだと思う。

中学校の頃、

数学教科書で、その問いかけ方が凄くおかしい気がしておもわず教科書会社電話してしまった。

今思えばなんでそんなことしたんだかもわからんが、

ただ中2の俺には「任意の整数」とかの「任意」が許せなかったんだ。

なんで許せなかったのかも今となっては思い出せない。

多分条件がすべてかかれてないのに任意とか書いたら問題が解けないじゃないかとかそんな文句だと思う。

ちなみに学校公衆電話から電話したんだが、さんざんまたされたあげく、

どちらの先生ですか?ときかれて、生徒ですといったら軽くあしらわれた気がする。

2008-04-03

三角形の部屋と少年

某所での書き込みの続編、回答編みたいなものです。

キャラクターは透明の箱に閉じ込められた少年取り巻き二人

「隅に角度記号のようなものがあります。」

「小部屋も二等辺三角形でした。」

再帰的で合同な二等辺三角形は数少ない。その隅は36度だね。

 普通に考えれば、記号を中心に部屋が回転して並んでいる十角形の建物。

 仕切りの壁で風車か星になるはず。」

ボードの表にありました。風車と星。」

「そのまま過ぎるかな。ほかに部屋の並びがあるとすれば、

 乱杭歯と正五角形に対角線を引いた形。小部屋の壁を調べてみて。」

「五角形の隠し部屋がありました。そこにコーヒーが。」

「そのカップ十角形だね。飲んでみて。」

「カップの底にさっきと同じ記号があります。」

「隠し部屋には他に何かあった?」

天井に絵が書いてありました。」

「ヒントを順に見つけていくと、最後は答えに至るみたいだ。

 でも、それでは時間切れになるかもしれない。

 →記号→十角形→五角形→十角形→記号→

 回文カノンの構造になっている。最初と最後は同じはず。

 一番目の鍵がそのまま問題の回答かな。…ボードの1は何?」

「そうか!1番は人、ヒトです。答えとして自然ですね。」

「待って。1、ONEは人であり神だけど、普通の人、という意味もある。

 普通の人では王に成れない。

 整数なら1ではなく0からはじまるか。0でオー、王の駄洒落かな。

 記号を見せて。なんだ。これだけでわかるね。

 結果が確定してない以上、参加者皆王であり王でない。

 僕たちは、生きていてかつ死んでいる、箱の中の猫といったところかな。

 ゼロ押して、送信していいよ。」

「正解だ!さすがです。」

2008-03-05

WEB屋底辺の品格

俺しがないWEB屋なんだけど、とあるWEBアプリケーションを頼まれで作ったときの話。

何でもやるIT土方なので、本当はデザインからシステムまで全部こっちで引き受けたいところなんだけど、発注側(代理店)が最初から勝手に「このイメージでいく」とクライアントに提出してて引っ込みつかなかったらしく、デザインに関しては別のWEB制作業者を入れ込んできた。

早速デザインイラレであがってきたのだがこれがひどい。

CMYKなのは許すとして、単位が全てmm。しかも整数になってないので手で適当に置いたのがバレバレ。

もしかしてpxに変換すると整数になるのかもしれないと期待してみたが、案の定、もっと酷い状況に。

大きさも配置も小数が混じるので、画面に書き起こしたときに同じ要素でも幅も高さも位置も2-3px程度ばらける破目に。

何べん言っても改善してくれない。

ピクセルとかアンチエイリアスとかすら理解してくれないので「じゃあ書き出すときアンチエイリアスを切ればいいじゃないですか」とか言われるし。れっきとした株式会社が自社のサイトの事業にWEBデザインもやりますとか書いてあるのに。

わかってもらえないようなので、言いがかりと捕らえられない様、丁寧に説明してるんだがそれでも聞く耳を持たない。

最終的には「あなたの言ってることがわからない。そんなに気になるんであればそちらで対応すれば」という一方的な態度に出られた。

仕方なく、もらった「素材」をもとに、全てこちらで作り直した。

それでも先方はしっかり「WEBデザイン」として予算の全額を持っていきやがった。

もちろん、代理店に説明しても理解されなかった。

最初にしっかり納品物の用件定義をしなかった俺を含めて、

WEB屋の底辺ってこんなもの。

2008-02-29

お前らに問題を出していいか?

0以上の整数([0-9]+)をGoogleで検索する。

そのうち、検索結果が0件になる最小の数 N を示せ。

英語のみとか日本語のみとかの条件については、各自がフレキシブルに設定せよ。

定理:www.google.com において、N <= 33333333333333124.

証明:http://s03.megalodon.jp/2008-0229-1516-42/www.google.com/search?hl=en&q=33333333333333124

2007-12-11

Re4:アプローチが腐ってるのかもしれないなあ

相談乗ってもらってる立場なのに気づかず時間開いてすまん。

まあファイル内容いったんメモリ上の配列にしてもいいのかもしれないけど、どうせならIOごと減らすアプローチからと欲張っているのだ…やりすぎたかな。メモリ消費はあんまり気にしないけど、ともかく動作時間はストレスなんで減らしたい。まあバイナリサーチも考えたけど、アベレージがわかってればそっちの方が早いかな…と欲張っている状態。それと行数!=IDなんでちょっとややこしい。

あと文字列オブジェクトのメンバ関数to_iは、整数化メンバらしいです。

#実は /^( ID1 )\t( ID2 )\t( DATA )$/ なるもっと嫌なファイルが控えていたり…げんにょり

http://anond.hatelabo.jp/20071211012602

改訂:2:30

増田今夜は寝ます、おやすみー

2007-11-27

http://anond.hatelabo.jp/20071127211346

あれ、小学校の時つるかめ算みたいな△□であらわすのなかった?

小学校教科書にあったきがする@76生まれ

ノート2冊、鉛筆3本で260円

ノート5冊、鉛筆2本で380円

2×□ + 3×△ = 260

5×□ + 2×△ = 380

・・・。

あれ・・・??

ちょっとマジ計算。

2x+3y=260

5x+2y=380

x=(260-3y)/2

5(130-3y)+2y=380

650-13y=380

13y=270

y=270/13

・・・俺の時代だったらこれが整数になったんだがな。

そうか、最近消費税があるから、

2x+3y=260/1.05=247.619...=248

5x+2y=380/1.05=361.904...=362

こういうことか?

5((248-3y)/2)+2y=362

5(248-3y) + 4y = 724

1240-15y+4y=724

  • 11y=724-1240

11y=516

y=516/11

・・・。

わかった!!

ノート2冊、鉛筆3本で260円→鉛筆は一本10円 ノート115円

ノート5冊、鉛筆2本で380円→鉛筆は一本10円 ノート72円

ノートは5冊だとまとめて買えるから割引になるというトリックなのだよ!

2007-10-12

http://anond.hatelabo.jp/20071012095701

俺もカウンタオーバーフローだと思って電車の中で概算していた。パスモ導入開始から208日か。1日86400秒だから、17,971,200秒と言うことになる。10mS秒ごとの32bit符号整数カウンタオーバーフローするには、ちと短い。

ことから、

大阪方面で問題が起きていないことから、自動改札機には鉄道会社ごとの独自仕様がかなり深いところに盛り込まれているのかもしれない。それは単一問題で社会が停止する危険を回避できるともいえるし、くだらない独自仕様コストアップをまだ続けているともいえる。

2007-10-07

『頭のいい人は、難しい概念も簡単に説明できるはずだ』問題 の解説

女教師ブログさんの「頭のいい人は、難しい概念も簡単に説明できるはずだ」問題という記事がはてブで話題になっていて、その大元はせつないエントリ群という増田の記事らしい。消されてて見れないが。

女教師ブログさんの説明の具体例
頭がいい頭が悪い
易しい説明が出来る
易しい説明をしない

割り算の「100÷30」を教える場合とする。

  1. 100の中に30がいくつあるか調べようという事です、と答える人
  2. 30×3+10=90+10=100 だから、100÷30=3 余り10 だよ、と答える人
  3. そもそも割り算を理解していないため説明できない
  4. 同上

1は割り算を知らない人にも分かりやすいが、答えは出せないし、教えた相手を割り算が出来るところまで引き上げる物ではない。

2は割り算の計算方法や算数的意味も過不足無く説明しており、また掛け算と足し算が出来る人ならばこれにより割り算も出来るようになるであろうが、掛け算も足し算も理解していない人には何の事やら解らない。

3と4は説明不要。

よく言われる「難しい概念も簡単に説明できる頭のいい人」とは

上記の例で言う1をやってくれる人。さらに言えばそれを教えているときに相手をバカにした態度をしない人。また2の様な基礎部分は一切触れずに、割り算が社会のどのような場面で役立っているかという物語を語れる人

「簡単に説明して欲しい人」は割り算を出来るようになりたいと思ってるわけではない。あくまで概要を知りたいだけなので、そもそも2の様な説明は必要ないし、やったところで足し算・引き算・掛け算を理解してない場合も多いので意味が分からない。

ただしこれが出来る人だけを「頭のいい人」と定義して良いかどうかは難しいところだろう。概要を説明する能力、割り算を出来る能力、人をバカにしない人格物語を語れる能力は明らかに全て別の物だ。この様な言葉を発する状況はほとんどの場合は合理化だと思われる。また一部、物語を語ることが専門(企画や営業など)の人が物語を語れない相手を見下している場合も見受けられる。

教える側へ:求められている物を見抜こう

割り算を習得する前程として足し算・引き算・掛け算が必要なのは自明だが、相手は必ずしも自分が割り算を出来るようになりたいと求めているわけではない。

割り算の概要を知りたいという人にはその概要の解説を、答えを知りたいという人には答えだけを、自分も習得したいという人には足し算からの学習方法を教えるべきだろう。

世の中には様々な知識や学問があるが、どの知識も学問も世の中全ての人に必要なわけではない。必要と便利は違うもので、皆自分の人生職業に必要な物は専門知識として蓄えていく。便利な物は意欲がある人は覚えればよいし、それにより人生の深みが増したり職業選択の幅が広がったりすることは多々あるだろうが、意欲が無い人に押しつけるべき物ではない。

なお、概要だけを知ることは無意味だという議論は間違いだ。ほとんどの人はよく分からないブラックボックスの上に現在の専門知識を成り立たせている様に、概要からさらに別の何かに役立てられることも多い。これは証明の仕方が解らない定理でも利用できることに似ている。定理を使って別のことをやりたい人に、本人が望んでいないのに定理の証明方法を教える必要はないだろう。(プログラマなら、定理=関数クラス、証明方法=実装と読み替えると感覚的に解りやすいかも)

教わる側へ:知りたいことをきちんと伝えよう、概要には限界があることを知ろう

あなたがどのぐらいの内容の回答を欲しがっているのかは「・・・ってどういう事ですか?」という様な単純な質問からではなかなか解らない。自分がその問題の概要だけを知りたいのか、前程となる部分からの仕組みを知りたいのか、習得したいのかなどはきちんと相手に伝えなければならない。

そして概要を説明するのも、専門家なら誰でも簡単に、という物ではない。面接の質問などがこれに近く、例えば「あなたの在学中の活動やそこで得た物を簡潔に教えてください」という質問に、自分の人生専門家であるあなたであっても、事前に何の準備もせずあなたを全く知らない人が感心し納得してくれるような話をするのは難しいのと同じだ。

今の時代は様々な、苦心してまとめた結果が保存されている便利なサイトがあるのだから、可能であればそのようなサイトを見る方が手っ取り早い上に、内容的にもそちらの方が得策であることも多い。

また世の中には概要を説明しづらいものも多く、さらに「・・・はどう凄いのか」という様な感覚実感も含めた問は、前程知識など無しに説明するにはせいぜい例え話が限界である場合がほとんどだ。これは小説の面白さをネタバレ無しに他人に語るのが難しいのと同じだ。(そしてこの例え自体がそうだ)

なお、知的好奇心を満たすだけであればそれほど完成度が高くない概要でも事足りるが、その概要を別の物事(例えばプレゼンや記事など)に利用する場合は完成度の高い「商品としての概要」が必要になる。しかしそのような物を作るのは先の面接の質問の例でもあるようになかなか難しい。専門家と言っても商品としての概要を作ることが専門ではないため、この様な場合は、あなた自身が前程知識の概要を理解し最終的に必要な商品としての概要を自分で組み立てるべきだろう。

追記

色々な人の意見を参考にすれば私が気付いていなかった箇所なども考えることが出来ると思いますので、はてブなどに回答してみます。出来る限りひねくれずに答えたいと思います。「書いていただけませんか?」というフレーズを使いますが、特にこれに関しては嫌みの意味を一切込めないで書くつもりです。

また念のため、追記より上の部分は文章の間違いの修正以上の修正はしないことを誓います。単語間違いレベル以上をもし修正する場合はdelタグを使います。信用できない人は魚拓なりローカルなりに取っておいてください。

なお、以下に一つだけ私が定義した言葉を使いますので説明しておきます。(ネット上ではそれなりに使われていますが正式な言葉ではありませんので)

※ 「オレ定義」とは… 辞書意味ではなく、「この言葉はオレの中ではこういう意味だ」という意味・定義。人それぞれなので議論するだけ時間の無駄

0.0 「頭がいい」について

追記を書いていたら案外多いのでまとめます。

「頭がいい」をどう定義するかはここでは問題にしません。

理由は追記4に詳しく書きましたが、「本当に頭がいい」という言葉は人によって定義が違いすぎるからです。なお「よく言われる・・・」という項目は、Googleで「頭がいい」「本当に頭がいい」など、適当に思いつく言葉で検索した先を20-30件ほど読んだ結果と、とつげき東風氏の本当の頭の良さという記事から私なりにまとめたものです。もちろん「定義」ではありません。

ここで一番問題としたい核の部分は、どのようにすれば良い質問と回答が出来るかです。伝わってなければ私の文章力の欠如が問題でしょう。大変申し訳ないと思います。

これらの理由により「本当に頭のいい人は…」で始まるような記事はコメントは結構ですのでご理解ください。

以下、既に書いた部分に関しては残しますが、以降「頭がいい人」のオレ定義に関するような部分は追記しません。

1
2007年10月07日 penkun はてな, ブログ 頭がいい悪いは別として、正しいことを適切に簡単に教えてほしいと願うのが教わる側です。

それはそうでしょう。私も現在受験しようとしているとある資格が一発で取れるぐらいの試験の要点などを簡潔でしかも眠くならないよう教えてくれる講師がいれば、月額20万ぐらいなら本当に支払ってもいいから受講したいと思います。しかし世の中にはそんな便利な物はありませんから受験勉強しています。

また、あなたが適切と思うラインは質問文に盛り込まれていますか? あなたの現在の知識は伝えてありますか? ジャンルは解りませんが、例えば学問的内容であれば、高校レベルはもう解らないとか、中学レベルなら解るとか、そう言うことは書いていますか?

質問とその答えというのは、会話や応答文である以上お互いの共同作業によって成り立つものです。片方の発言に足りてない部分があれば質問意図は相手に伝わりきらず、あなたが適切と感じる回答は得られないでしょう。責任は説明する側と質問する側、両方にあります。

2ch自作板にはエスパースレといわれるスレッドがあります。不十分な質問からその人の質問意図を出来る限り読み取り、出来る限りそれに答えてあげようというスレッドです。もちろん質問意図を読み違えることも多々あります。あなたの質問はエスパーに頼らないといけないような質問になっていませんか? エスパーに頼らずに済む質問にしたければ事前調査が必要ですが、質問の前に調査していますか? 2chであればテンプレは読んでいますか?

249 Socket774 :2006/04/08(土) 22:08:10 ID:B56/Hai2
わからない五大理由
読まない
調べない
試さない
理解力が足りない
人を利用することしか頭にない

乱暴ではありますが真実だと思います。少なくとも他人の疑問に山ほど答えて疲れ果てた人の心の叫びだと、私は感じます。

2
2007年10月07日 zonia コミュニケーション, 教育, イメージの齟齬 あー、100÷30のアナロジーは不適切だなあ。「頭がいい=割り算を理解している」というのは飛躍しすぎだ。頭がいいって何だ? 割り算を「理解」しているって何だ? 「理解」してないと説明できないのか?

仰るとおりで、適切な例を誰もが解る例で出せなかったのは私の解説力の無さです。未だに思いつきません。本当に嫌みではなく、もし可能であれば適切な例で解説記事をお願いできればと思います。

なお、「頭のいい」や「理解している」は所詮オレ定義になってしまうので、こちらに関しては結構です。

3
2007年10月07日 hebomegane はてな 僕が腑に落ちる説明の仕方してくれる人がやっぱスゲーなと思います。

同じく凄いと感心します。私もそのような理由で尊敬している人もいます。しかしそれは次の状況を満たしていたんだろうと思います。

  • 説明者が説明する能力に長けていた。
  • 説明者が質問意図を十分に理解していた。
  • 質問者が自分の質問意図をきちんと伝えていた。
  • 質問者が自分のその分野における現在の理解レベルをきちんと伝えていた、もしくは近しい人でそれを知っていた。

私はとあるローカル局番組コメンテーターをしている方の解説能力尊敬していて、その人で帯番組を持って欲しいと常々思っているのですが、私が既に勉強している分野の事に関しての解説は不満を感じることが多いです。その人は説明の前程として中学程度の知識などを前程にしているから、既に知っている人間には冗長な部分が多く突っ込みが足りないんだと、自分がある程度詳しい分野の事を解説しているときに見えてきますね。

4
2007年10月07日 SiroKuro 教育 それは「頭のいい人」じゃなくて「良いプレゼンター」。ところで、その簡単な説明だけであなたは難しい概念を理解できるのですか?

仰るとおり、「良いプレゼンター」だと私も感じます。ただし「頭のいい人」という言葉意味は所詮誰しもオレ定義ですので、別に気にしていません。今回はググってある程度色々な人のオレ定義の「頭のいい人」を読みつつ、とつげき東風氏の本当の頭の良さという記事も参考にしました。なお追記2及びこれらの理由より、「頭のいい人」論は結構です。もし適切な質問方法と適切な回答方法に関する記事を書いていただけるのなら是非お願いしたいと思います。

後半、「その簡単な説明だけで・・・」ですが、結論だけ言えば誰かの概念の説明だけでは理解できません。それを取っ掛かりにして調べたり書物を読んだり、数式が出てくることなら解いて、プログラムなら車輪の再発明をして、そこまでやって初めて、当該項目が仕事に利用できるぐらい本当に理解できると思っています。この様な手間が掛かったとしても、指針があるだけ自分で一から勉強するよりも早く勉強できるので回答していただけることはかなり有用だと思っています。

5
2007年10月07日 ululun はてブ米に入りきらないのでエントリを起こす

お待ちしております。

6
2007年10月07日 REV あたまのいい、が未定義

はい、意図的に未定義です。理由は前述の通り、どうやってもオレ定義になるだろうと考えられるからで、文中の「よく言われる・・・」はググった結果と前述のページから私なりにまとめたものです。

またこれも重複してしまいますが、オレ定義の乱発になりますので「頭のいい」に関する定義問題は結構です。

7
2007年10月07日 mmasuda mmasuda 「説明させる」と「理解させる」の間には困難な道のりがあることを忘れている人ほど「簡単に説明しろ」と言いがちのような気がする。

同感です。実感まで含めて理解するには、浅くでいいので前程知識の部分などを一通り、実際になぞってみる必要があると感じています。

8 (以下10/09追記)

少し見ない間にブックマークがかなり増えていて驚いています。

2007年10月08日 monnet 教育, 考え方  「難しい概念も簡単に説明できる頭のいい人」とは物語を語れる人。なるほど。でも具体例は1つの解釈とは思うが、もとの算数の例では、易しい説明で、概要理解→計算習得まで教えるプロセスが含まれているのでは?

元の算数の例というのがなにを指しているのか不明瞭なのですが、「切ないエントリ群」の事であれば、元が読めないので私には解りません。

私の割り算の例を指しているのであれば、もし足し算すら知らない人に割り算まで理解させるとなると、教育方法としてはある程度のラインであると考えられる義務教育ですら、割り算を教える所まで到達するのに270時間程掛けています(参考:会津若松市立一箕小学校)。「易しい説明」という言葉の語感にこれだけの時間が詰まっているとは私には考えられないのですが…

9

本題とは関係ないのですが、私も書く前に少し考えたことなので。

2007年10月08日 tokoroten999 「「本当に頭のいい人は・・・」で始まるような記事はコメントは結構です」こういう他者との意見交換をしたいならブログ日記でやればいいのに。なぜ増田

自分のブログ日記を持つ気がないからです。ちまたに溢れるブログサービス捨て垢で、ということは考えましたが、はてなアカウントを持っていれば増田が使えるからいいか、とこちらにしました。多少意見交換が面倒ではありますが、運用で何とかなる範囲だと思っています。

10
2007年10月08日 kokokubeta ヒント この種の問題でいつも悩むのは、「相手がどこまで理解していて理解してないのか」を把握するのが難しいのと、「どこまで理解したいのか(知るだけか、理解したいのか、できるようになりたいのか)」だなあ。

同感ですね。文中にも書きましたが、教える側はこれを感じ取る・聞き出すことが胆だと思います。

11
2007年10月08日 petem 増田, 教育, *思考法 私は説明する前に「すごくわかりやすく説明するけど7割くらいしか正確じゃないから」といって例外部分をはしょります。深く理解したい人はその後も質問してくるのでそのとき対応。

私も教育においてまず例外部分を削るのは良いことだと思います。例外は見方によって何段階にも分けられますが、小学校3年生で割り算を習う際に分数や小数はまだ教えないのも、整数以外を例外と見なして単純化だろうと私は考えています。

ただ概要の説明だけの場合は例外を省略するのは当然として、枝葉は省略しつつも幹だけでなく全体の形や他の物との関係性の説明も必要であったりと、省略の仕方がなかなか難しいところです。

12
2007年10月08日 cappin 剰余「30円商品は100円なら3つで10円余り」きっちり「100Lの水を30人は一人3.3L」余らす^o^「100万を30人で割勘なら一人3.4万で余り2万」一般に、使う場面での役に立ち方を言うと納得されやすいと思っている。

そのような説明も良いですね。私が使用した説明は、元々小数や分数での割り算の意味が分からないという話の際の説明から来ているので、今回の例としては不適切ではないかとも思いますが、記事を書いていた際には他に思いつきませんでしたのでこれを使用しました。

13
2007年10月08日 terracao 言及された 「解説」書いてもらったのに難癖をつけるのは申し訳ないんだが、増田主にとって「割り算」は難しい概念なのかな。私は現代思想とか社会理論とかを想定していたんだけど。/増田にあるまじき丁寧なレス感動!!!

ご本人様からお返事を戴き有り難うございます。

割り算が難しい概念かどうかという事ですが、「難しい」というのは相対的な感覚なので例として使えないことは無いと考えました。義務教育を受けていることが当然の現代の日本人からすれば全く難しくない問題でしょうが、中世の「読み書きそろばん」を習わずに一生を過ごした人からすればある程度難しい問題だと思います。難しさの実感も含めてとなれば、例えば高校レベルの問題を例にすれば難しく感じる人も増えてくるかと考えましたが、そうすると「難しい概念を簡単に説明するとは何か」という私が本質としたい部分から議論が離れていきそうだと思い、こちらにしておきました。

2007-08-24

整数問題なんて

社会で最も使わないものだな

18歳まで

[]倍数判別法

  • 2の倍数 - 下1桁が2で割り切れる。
  • 3の倍数 - 各位の和が3で割り切れる。
  • 4の倍数 - 下2桁が4で割り切れる。
  • 5の倍数 - 下1桁が0か5。
  • 6の倍数 - 2の倍数であり、3の倍数である。
  • 9の倍数 - 各位の和が9で割り切れる。
  • 10の倍数 - 下1桁が0。

3の倍数判定法の証明。その他略

簡単のため、3桁の整数について考える。

100 の位の数を a 、10 の位の数を b 、1 の位の数を c とすると、3桁の整数は 100a + 10b + c と表わせる。

100a + 10b + c = 99a + a + 9b + b + c = 3 (33a + 3b) + (a + b + c)

3 (33a + 3b) は 3 の倍数なので、a + b + c が 3 の倍数ならば、3 桁の整数 100a + 10b + c は 3 の倍数である。

よって、各位の和が 3 で割り切れたら、その数は 3 の倍数である。

2007-08-02

ちなみに京大の場合

http://anond.hatelabo.jp/20070802144801

昔は5,6人でひとつのCPUを作ってたんだが今は一人でひとつのCPUを作ってるみたいだ。その分内容は簡単になってるみたいだけど、マルチプレクサや符号拡張回路図まで示しちゃうのは甘やかしすぎのような気がする。

コンパイラは昔から一人でひとつ作ってるけど、基本は整数のみのサポートだからその東大実験よりは楽そうだな。東大での「ゼロから」っていうのがどれほどのものを指すかは知らないけど、こっちだと字句解析・構文解析はlexyacc任せだし。

それにこういうのは最終奥義「先輩からの遺産」があるんで、実はわかってないけど「要領よく」やっちゃう人もそれなりにいるかも。

あ、「昔」って言ってるけど21世紀突入してからの話なんで、もっと前がどうだったかは知りません。

2007-05-09

http://anond.hatelabo.jp/20070509154649

mySQL迷子

なんだこれ難しいな…。

100までの整数がなんらかの状態でレコードにあって後はSQLひとつ流せばおわりなんだけど

select 
	if (tf.fizzbuzz = '',tf.num,tf.fizzbuzz) fizzbuzz
from (
	select 
		num,
		concat(
		if (mod(num,3)=0,'fizz',''),
		if (mod(num,5)=0,'buzz','')
		) fizzbuzz
	from tmp_fizzbuzz 
) tf
;

うえのSQLphpMyAdminで流しても反応がない。。。。

mySQLコマンドラインで流せば帰ってくるんだけど。

いまいちどころか、なかなかピンとこないなぁ。

慣れてきたつもりだったんだけど。。

_ノ乙(、ン、)_

ログイン ユーザー登録
ようこそ ゲスト さん