頭の中に溜まってきたので吐き出す
1ヶ月以内に実現?
中長期
- IT系資格、情報工学、もしくは個人開発で自分の理想とするソフトを実装し公開し続ける
- 新居周囲でかかりつけ医見つける(内科外科、歯、目)
- 新しいスパイク欲しい、アディダスのトラックスパイクが欲しい
- トラックレース出る100、400かな
- Benqディスプレイ、フリマ出品
角砂糖のような真四角の空間に何時間も閉じこもって
何をするでもなく,SNSを見続けた人間の末路を考えて冷や汗を描く
ああいう風になりたくないとオトナを見て思うが,自分を振り返ると1日でアリの一歩ほどしか進んでいない
腕強な宇宙飛行士はどうやって月面着陸を果たしたのか?
紙を42回折り畳めれば到達できる一歩と言うと,とてもcheap
アキレスと亀のごとく無限に続く時間の中で決して追いつけない物語を歩むよりも
空想の中で一足に追い越す寓話を歩みたい
モヤモヤが続く頭の中で,解放できない衝動や感情を使って,
ゼロとイコールで結ぶ作業は果たして意味のないことなのだろうか?
いつも溢れ出てくるこの感情と思考をカタチにする,必要な要素は何も与えてくれない
逃れようがない現実と向き合いながら
今日は控えめな晩御飯をと決心する
https://chatgpt.com/share/67ade009-57d8-8004-9a73-7ab69e376e2e
いつぶりに会うかな?
同じグループ会社に勤めていたけど,それぞれ別の子会社に所属していて,拠点が離れていたから面直で会うことはほとんどなかった.
年一回あるかないかの頻度で,どちらからともなく近況をチャット上でやり取りする程度だった.
数年前の同じ年,偶然,当時の勤め先を両者とも退職し,より疎遠になっていたが,ふと先方から連絡が来て,都合よければメシでもという話になった.
久しぶりに会う同僚は生え際あたりが少し薄くなったようだが,今では一児の父親であり,転職当初思い描いていた目標と違えど,安定した業界への再転職を果たし立派に家族を養っているようだ.
「おっ久しぶりっ!」
「いや〜,大人になったなぁ〜笑.てっきり昔のまま中学生みたいな奴が来るってお思ってたよ」
「どういう意味だよっw.俺もう30だぜ.大人っていうか,もう,おっさんの仲間入りよ」
「そっかぁ〜.もう三十かぁ.時間が経つの早いなぁ〜」
そんな会話を交わして,以前と変わらない猫背で迎えてくれた同僚が運転する車で,目的の居酒屋に向かう.
待ち合わせ場所周辺は彼のテリトリーで,おすすめのお店に連れて行ってもらうことに.
渋い店構えの居酒屋へ到着し,この時間帯にしてはガラガラの駐車場に’営業中’なのか心配になりながらも,とりあえず入口へ向かう.助手席を降りて外の冷たい空気に身震いしながら,後部座席を見るとチャイルドシートが見えた.
「あれ,子供いるんすか?」
「いるぅ.言ってなかったっけ??」
「聞いてない笑.マジかー,パパやんっ.『パパ,おしっこ...』」
「おしっこ行きたいの??」
馬鹿みたいな会話をしながら店先の営業中の文字に安堵する2人.
めちゃくちゃ僕好みの個人店.早くメニューを見たい.
店内は思ったよりも広く,畳座席・カウンター・テーブル席と数十人入るスペースがある.各座席に準備されたメニュー表には定食・海鮮・焼き鳥・豊富な一品料理の数々・おでんのセルフサービスがあり,さらに壁にズラリと並ぶ短冊に書かれたメニューもある.中規模の宴会もできるみたいなので個人店にしては規模が大きい.
僕らが入店した時は貸切状態だったけど,徐々にお客さんは増えていきそれぞれの席で食事を楽しんでいた.
「どこに座る?ここは?」
と僕はテーブル席エリアの中央を指したけど,
「いや,あそこにしよ.」
と窓際の,一番入口から遠い席に座る.
「遠ぉ...」
豊富なメニューに感動しながら食事の構成を考えていると,まずは飲み物をと,
ノンアルコールビール,それにレモンサワーを注文する.
彼は車なので今日は飲めない.
「キャバクラに一緒に行った時のこと覚えてる?」
「キャバクラ?いや覚えてないよ...ていうか一緒に行ったことない.」
「あれそうだっけ?あれはキャバクラじゃなかったっけ...?」
「”相席屋”やろ?」
「あぁ〜,そうだった笑.相席屋だ.相手に(なんか中学生みたいなやつがきたな)って思われてたやつ」
「相席した相手にことごとく惨敗したやつね笑.もう1人同僚と一緒に3人で行って,そいつが「初対面の相手にあんな態度取るのは失礼」って言ってたの覚えてる笑...いや仕方ないやん.3人とも顔が良くないんやからって思ったけどね笑笑」
「だぁーはっはははっ笑笑」
懐かしく,こういう時にぴったりの会話に大笑いしながら,暫くして到着したノンアルビールとサワーで乾杯した.
お通しの白和えとセルフサービスのおでんに,もうこれだけで十分ウマいと満足感に浸りながら両者近況を共有しあう.仕事の話や家族の話などなど...
仕事の話をしている最中,AIの話になった.
「俺ほんとは,ITやソフトウェアエンジニアの業界にいきたいんよねー.ちょっと前に友達のプログラマーに話聞いて,どうするかもわかってるけど,今取り組んでいる問題っていうか,やっていることが俺には難しくて放置してる...」
「君でもそんなことあるの?」
「あるよ,そりゃぁ.俺昔からコードを書くの得意じゃないし.高専生時代,プログラミングの授業とかあったけど,周りに比べて全然かけなかったよ」
「なんか,アルゴリズムはわかるけど...例えば,数学の問題の解法をコーディングするとして,頭の中では解けるけど,それをプログラムに落とす際,記述の仕方とか方法が分からんくて詰まるみたいな.でもそれって,プログラムを書かないと上達しないってわかっていてもやってないから,全然ダメやね...笑」
「そんなもんなの?俺は全くやったことないから分からないけど.行きたいITの会社に直接連絡とって,数ヶ月無給で働かせてもらってから,今はその会社と契約してるフリーランスの友達いるけど,そういう方法もあるんじゃない?」
「そうやね.それも一つの方法としてありやね.」
「東京に来たらいいやん.その業界の仕事たくさんあるんじゃない?」
「都市部にはめちゃくちゃあるね.実際求人見るとそうやし.でも,九州に住みたいんよねー,って考えると福岡とかね.実際,福岡で別業界から転職してソフトウェアエンジニアしている奴も知ってるし」
「いいじゃん.そういうツテ使えばいけそうじゃない?」
「いけるかもね.でも結局入った後も技術向上させないと置いていかれるだけやから,まぁ今でも言えることやけど,取り組んでいることを進めていくしかないかなと」
「んぅーぅん.あれはどうなよ.AI」
「やばいね.俺も実際使ってるし今朝も簡単な調査に使ったよ.去年くらいからガッと進歩してきてるイメージで,あれは進みが早すぎてついていけない」
「どうなっちゃうのぉ.ああいうの出ると俺って必要ないって思っちゃう.元職場でRPA作ったけど,今は使われてないかなぁ〜?」
「使われてるんじゃない?流石に以前の紙でやり取りしている時代に戻れないっしょ」
「そうかな?難しい話は分からないけど,RPAをやってた時はあらかじめ用意されたパネルを動かして簡単に作れたし,そのー,システムにデータを飛ばすのも簡単にできたけど.AIはシステムへのアクセスとかできるんかね?」
「どうなんやろね?...できると思う.今はまだ人による認証ありきでログインするみたいやけど,いずれそれも無しでできるようになるみたい.」
「ヤベェーな〜.そんなことになったらますます俺いらなくなる...でも,地震とか災害が起きて電気使えなくなって,それが使えないってなったら人間困っちゃうよね」
「まぁ,そん時はそん時でまた考えればいいじゃない?今は,使える技術があるなら全力で使えば良い.今の仕事でも使う?」
「あれは使ってるよ?ChatGPT.でもこのChatGPTをさっき話したRPAの代わりに使うとしたら,何,チャットでお願いしたら良いってこと?」
「...チャットでお願いするっていうより,多分API使ってシステム間にGPTを噛ませてやり取りする感じになる」
「API??難しいなぁ〜.それをやるとRPAと何が違うの?」
「汎用性が広がるかな.今RPAでやっていることはもちろんできるけど,それを使って別のこともできるみたいな」
「ふぅ〜ん」
「っていうか,そもそもAIって,これまで人類が使ったことない全く新しい技術だから,今の技術を置き換えて使うというより,もっと違う使い方をしていかないといけないと思う.だから,使い方によって人間の在り方も変わっていくと思う.」
「難しいなぁ〜.なんでもできるAIができちゃったら,この先どうなる〜?」
「わからん」
「そのAIを作った人がすごいのか?それともそれを実行できるAI本体がすごいのか?」
「おっ,それは良い問いというか,ジレンマよね...良かったなぁ,今日は深いところまで会話できたと思う!」
「そうぉお??こんなん誰でも思いついてることだと思うよ笑笑」
「いや,少なくとも俺の周りにはいないから笑」
AIの精度の話とかもっと色々な会話をした記憶があるが,酔っ払いの記憶なので信用できなく,飛び飛びの内容になってしまった.
何が言いたいのか...?
...そんなこと,考える意味ないよね...?
それでも...何か...この先が...あ...
//
TBC
3/nを下書きのまま放置して数ヶ月と数週間経過.
隙間時間で問題を考えてみるけど,ダッシュしたり,逆立ちしても問題のメインのプログラムがわからず今に至る.
もう,他の人の正しい解答見て理解するしかない...
下記参考にした解答例(参照先UserID失念しました,ごめんなさい)
関数 int permutation_rankの動きが分かれば,後は自分のコードと同じ.でも全然理解できない.
試しに順列(3,1,2)の場合のrank,factorの動きを解析してみる.
初期値; i=2の時,jのfor分は条件不成立で動かず,
smaller_count = 0
rank = 1 + 0 * 1 = 1
factor = 1*(3-2) = 1 のまま
i=1の時,perm[j]=2,perm[i]=1でif文不成立で,
smaller_count = 0
rank = 1 + 0 * 1 = 1
factor = 1 * (3-1) = 2 に更新
i=0の時,j=1,2に対しperm[j]<perm[i]=3が成り立ち
smaller_count = 2
rank = 1 + 2 * 2 = 5
factor = 2 *(3-0) = 6 ←これは使われない
以上でプログラムが終了する.
これは,入力例1の解説にある結果と一致するので動作はおそらく正しいと思うけど,なぜこれで辞書順が計算できるのか解らない.
ここで辞書順の定義に立ち返る.問題の注記には
2つの数列 について、ある整数 が存在して かつ が成り立つとき、はより辞書順で小さいと定義されます。
とある.
んーでも,X=(1,2)とY=(2,1)で考えてみるとこの定義不成立で辞書順付けれなくない?ってなるのは俺だけ?
でも実際は,Xが1番目でYが2番目となる.理由は数列の1番目からX_k < Y_kが成立するかららしい(...
(3,2,1)の時,rank=7になりそうかなと思ったけど,smaller_countは毎回0に初期化されるので,i=1の時rank=1+1*1=2になり結果6を返す仕組み.
すごい,よくできてる!
頭の中でこの問題を解く場合と違い,コーディングの場合には言語仕様に従って,適宜コードを分けて実装が必要.
今回はsmaller_countとfactorの計算はそれぞれ独立に計算されていて,factorはj番目に入る数の総数を示しているわけではないことを理解する必要がある.
i番目の数より小さい右側の数が何個あるかをsmaller_countに格納して,独立してN!を計算.このfactorが順番の決め手で,for分の最初が1!,2周目が2!になるよう設計されている.iが小さければ小さいほど,factorは大きくなる.
総数=組み合わせと混同しそうになることを注意.j番目に入る可能性のある数の個数,つまり(N-i)!を計算しrankに足し込んでいる.
[1,2,3]はi番目の右側が小さくなることがないので,rankは増えず初期値の1
[1,3,2]はi=1のとき3より小さい2が右側に存在し,rankに[1,3,2]より小さい順列の数が足し込まれて2になる
[2,1,3]はi=0のとき,j=1の数が小さいので rank = 1+1*2=3となる
…
以下同様
再度factorについて考えると,入力された順列より辞書順で小さい順列の個数を記録している数式になっている.そして,この数式を組めるかどうかがこの問題をCで解けるかどうかに直結しているように思う.
また僕がこの問題に苦戦した理由は,机上での解法をコーディングしようとしたことが誤り.
コーディングでは,殊更,関数や数式のまとまりを無理に関連付ける必要はなく,独立して計算させておいて,結果を算出するときに利用する方が実装上便利だし,実行もできそう.
//
表題の件,続き
具体例を示しながらこの問題の理解をさらに深める(コード書く前にやるべき!!!)
n=3の時,生成される順列と辞書順
(1,2,3), 1
(1,3,2), 2
(2,1,3), 3
(2,3,1), 4
(3,1,2), 5
(3,2,1), 6
組み合わせの総数はn!で与えられるので,3!=6通り
n=4の場合,4!=24通り
☆1配列s[0]の数字につき(n-1)!個の順列が生成される...これ順列生成に使えそう
→int j=0;と置いて,j=n-1になるまで順列を生成する
☆2 s[0]にくる数字を生成する順番は[0]⇄[2],[0]⇄[1]の順...これは☆1より先に条件分岐させる必要があるので,コード的には☆2{☆1}の形になる
・・・
記事の書き初めから数日経ってしまった.ので,支離滅裂な読みにくい文章になっているかもしれないけど,ごめんなさい.
とりあえず昇順ソート関数をpermuteにぶっ込んで結果を表示してみた.
#include<stdio.h>
#include<stdlib.h>int n;
int p[10],q[10],s[10];
int y,z,count=1;
// 配列の要素をスワップする関数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 昇順ソート関数
int compare(const void *c, const void *d){
return (*(int *)c - *(int*)d);
}// 配列が等しいか確認する関数
int is_equal(int a, int b){
for (int i = 0; i < n; i++){
if (a[i] != b[i]) return 0;
}
return 1;
}//順列を生成し,辞書順の位置を確認する関数
void permute(int arr[], int l, int r) {
if(l==r){
qsort(arr+1,n-1,sizeof(int),compare);
if (is_equal(arr, p)) y = count;
if (is_equal(arr, q)) z = count;
count++;
return;
}
for (int i = l; i <= r; i++) {
swap(&arr[l], &arr[i]);
permute(arr, l + 1, r);
swap(&arr[l], &arr[i]); // 元に戻す
}
}int main() {
scanf("%d",&n);
for(int i=0; i < n; i++) {
s[i] = i + 1;
}
for(int i=0; i < n; i++){
scanf("%d",&p[i]);
}
for(int i=0; i < n; i++){
scanf("%d",&q[i]);
}
permute(s,0,n-1);
printf("%d %d\n",y,z);
printf("%d\n",abs(y-z));
return 0;
}
入力
3
1 2 3
1 3 2
出力
6 0
6
全っ然違うけど,カウント総数は意図通りなので,if(l==r)条件分はこれで良いっぽい.後はどうやって要素0番目swap直後の新しい順列を昇順ソートにかけるか...
(...マジ,やっと.やっと居酒屋でメシと酒が飲めるっ!)
勤め始めた仕事中にも関わらず,緊張感を上回るワクワク感で夕刻から浮ついていた.
まじ久しぶりなんだ,外でうまいメシと酒を好きなだけ飲み食いできるのはっ!
外勤務の仕事を始めて以来,飲みに行く機会が減ってしまった.
「次の休みこそは」と心に決めて数ヶ月,それが今日.
期待感で早足になる.
「21時にあそこの店で,焼き鳥食いたいからさ」
「了解しました〜」
元職場の後輩と連絡を取り,週末休み明けの月曜だからと予約は取らずに目的地へ直行する.
本当なら,今日は非番のはずだった.
二日前,急遽シフトの変更を課長から伝えられ,渋々出勤していたから.運動が大好きな子供が,運動会の朝に起床した時のような高揚感がある.
「何名様ですか?」
「1です」
「カウンターへどうぞ」
「後で2,3人追加で来るかもなんですけど...」
「では,テーブル席へどうぞ」
予約なしに,席についてこんなやり取りが成立するのか入店前は不安だったが,月曜というフィルタが効いて,難なく着席できた.
四角いテーブル席は最大4人座れる空間になっていて,何にも考えずに座った正面奥は1人では居心地が良くない.
「あと5分でお店に着きます」
「先に入ってるで」
先に入店しているのに,受け手が迷うようなメッセージを送るのは悪いなと思いつつ,いつも相手との関係性に甘えてしまう思考が働き,自分の中でなかったことにしてしまう.新たな知り合いを作っていく中で,誘っても断られる可能性だってあるわけで.
変えていかないと.
注文をひと通り終えて,お通しとレモンサワーが到着し2,3口したところで後輩が到着した.
「お疲れ様です!」
「おつかれっ,久しぶりやねっ」
「ほんと,そうですね」
軽めの挨拶を交わし,メニュー表見ながら注文状況をすり合わせる両者.まずはお酒がないとってことで彼はビールを注文する.
「今日はごめんね.急に時間変更になっちゃって...」
「ほんと,そうっすよ.ちゃんと課長に言っといてください(怒)」
「言っとくわ...(泣)」
そんな会話をしている間にビールが到着し,お互いのグラスを交わし乾杯する.
やっぱこの瞬間が最高で...めちゃくちゃうまい.
「最近どう?」「職場で担当の最年長になりました.」「え,今何歳っけ?」「〇〇です」「その歳で最年長?俺今最年少なんやけど...職の年齢インフレやばぁ」「えぇ〜!前回飲んだ時に話してくれた職場ですよね?」「いや,そこは辞めて今はこのお店の近くの職場.」「何してるんですか?」「〇〇」「マジっすか,最近忙しいんじゃ無いですか?」「今月頭から中旬がピークだったかなー」etc,etc...
主に僕が振る話題に対し,後輩が答える形で会話をする.
目の前の食事のことから,少し先の将来のことまで.
(俺は色々話せて気持ちが良いけど,後輩は大丈夫だったかな?...なんにせよいい奴だ)
職場年齢の会話の中で,僕が切り出す.
「俺さ,最近’時間’について考えることがあって」
「時間ですか?時間の何をです?」
「年齢もそうだけど,’時間’って一方向にしか進んでいないっていうか,不可逆な指標だと思うんやけど,人間にとって.増える方向にだけ進んでる.だけど,もし’時間’が存在しなかったらって考える.考えたことない?俺がまだ君の職場にいた時,為替の話をしたと記憶があるんやけど」
「んー,覚えてないっすね.時間が存在しなかったらですか?いやー,考えたことないっすね」
「うん.’時間’がなくなっても為替以外の世界は全て今と同じように動くと仮定して,為替の動きだけ抜き出して考えてみるっていう.そもそも自由ってどういう状態か考えた時に,自分にとって’時間’も制限をかけてる指標だなって思うようになって.最近,魚豊って人の『チ。』っていう漫画読んでー.知ってる?地動説と天動説の話で,アニメにもなってる」
「知らないっすね...あー,聞いたことあるかも」
「その漫画で,天動説が信じられている世界では人々の感情や心の持ち方にも影響があるような表現がされていて,宇宙の底が地球だから,暗く,下を向いて生きてるような,希望がないような生き方になっちゃって,神様がそう作ったからしょうがないみたいな受け入れ方をしてる.だから,今俺が話してる’時間’についても同じように考えて,そもそも’時間’て自分にとって制限をかけるばっかりで,不要(いらない)じゃないかって考えてみる.そうしたら,世界の在り方がどうなるかって考えてみる」
「うーん,難しいっすね.でも,代替手段が出てくるんじゃないですか?’時間’の代わりになる指標が...」
「そうかもね,でもそもそも人間が’時間’っていう存在を知らない世界線を考えてみる.それでも’時間’を開発しようとして,すると思う?」
「あー.ムズイっすね...そんな思考実験してる人周りにいないっすよ」
「いない?でも,今日の飯どうしよっかなとか考えるよね,皆んな?それと一緒よ.だし,ただの俺の妄想でフィクションやからね.でもこういう話ってあんま外に出したくないというか,人に話したりするのは,こう...変に思われたくないから嫌なんよね」
「なんか話聞いてると,哲学っぽい,てか哲学だと思います」
「んー,これって哲学?うーんぅ...」
「信仰宗教とか,そっち系の人になろうとしてます?新しい世界が的な」
「マジでっ.これ宗教っぽい?なんかそれ嫌だなー.ただの妄想だしフィクションよ」
「でぇ,その’時間’に関する考えの答えは出たんですか?」
「出てない.そこなんよね.色々考えるのはいいけど,自分で解答を出せないところが自分にイラつくとこ.と,言っても何にも前に進まないので,<自分にできることは全部使って前に進めるしかない>っていう,最終的に体育会系のノリでいく」
「そこがZZさんらしい.」
「まあしゃーない,能力が無いんだから」
「でも答えが出たとして,どうするんです?それこそ組織とか団体作ったりして思想を広めたりするんでるかー?」
「いや,文字に起こして共有する.有益なら使ってもらって,俺自身も使える時は使うようにする.あくまで2次情報として扱う.俺自身が1次情報の中に入るっていうか,そこにどっぷりみたいな使い方はしないかな」
「それ賢いっすね」
「使えるかどうか知らんけど...」
ふとスマホに目をやると,20分前の着信通知に気づく.もう一人,声をかけていた人物から電話が来ていた.入店からすでに1時間半経っている.すぐに折り返す.
「お疲れ様ですー」
「ごめんよ,電話気づかなかった🙏.まだ連絡したお店にいるよ」
「んー,どうしよっかなって思ってて.いやー,明日予定があって朝早いんすよね...」
「明日仕事?通常なら休みの曜日やろ?」
「XXさん,お疲れ様です,お久しぶりです!え!来れないんですかっ」
「YYさん,お久しぶりです!!いやー,めちゃ行きたいんすけどね...仕事じゃなくて,先輩とゴルフに...」
「マジかー,予定があるなら仕方ないね.じゃ今日はDNSってことで」
「はぁい,今日はDNSで...また,誘ってください!!」
「ウィーす.おつかれ!」
お酒とつまみが一周したところで,そろそろ2軒目へという話になり,このお店へ来る途中に発見した,個人店っぽい感じのお店に行くことになった.
が,のれんの雰囲気に気押されて入店せず,結局,後輩おすすめの中華居酒屋に行って終電の’時間’まで飲み食いし,僕は1人でも3軒目に行くと決意を表明したところでお店を出た.(中華居酒屋,ご飯めちゃくちゃ美味かった)
駅までの帰り道,月曜日深夜の田舎の繁華街は,土方っぽいおじさん3人組がベンチに座って屯してる以外に人影を見つけることができない.
「寒いっすよねー」
「12月の月末やし.てか東北出身の君がそれいうの?実家付近,今雪積もってるんやないん?」
「積もってますね(笑)」
「こっち,雪降らないのなんか寂しいよね.雪降ると風景が白けるというか,ひかって見えてめちゃ綺麗やから,それが無いのは寂しい」
「そうなんすよ,光を反射するんで発光してるように見えるんすよ.ZZさんの地元って雪降るんですか?」
「降るよ.積もる時もある」
「そうなんですね!で,家をどこに建てるかって話にもつながってくるんですけど.祭事ごと,祭りとかも見ててなんかこう違うなっていうか...」
「あれでしょ,結局,観客になっちゃうよね.観光してるみたいな.感情的に中に入れないよね」
「そうなんすよ.地元の祭りと比べてしまうと,観客になっちゃうんすよ.だから,やっぱ,家を建てるなら地元の方が良いかなとか.そういうことも含めて今度帰省した時仲間に話す予定ですっ」
「イイねっ.俺も今度帰省するからさ,色々整理するよ.じゃ!」
「はいっ,今日はありがとうございました!!」
□
まえおきへ続く
続きを読む