なが月・3日目

3日目

午前

MATLABを利用した解析・線形代数演習の課題をやった。課題からnつを選んで解答しレポートとして提出せよということだが、全講義課題中からn問だけ選ぶのではなくn回分の講義課題全問だったらどうしようと不安になってガリガリ解いていた。問い合わせに返事が来ればよいのだけれど。

今日はABCが行われる日であり、かつこのレポートをする必要があったためAtCoderの過去問は解いていない。

午後

C言語の続き。制御構造は何も難しいことはない。原始的なwhileとswitchとforがあるだけであった。関数は引数のデフォルト値もないし、名前付き引数もないので不便である。便利さを求めて言語は派生していくのだなあと思った。

scanf("%d %s", &numVar, charVar);というように&をつけることに関してはメモリアドレスを指定してそこに代入するということで、Perlのリファレンスと似たものを感じた。そこまで違和感はない。好きではないけど。

問題はcharVarである。char charVar[42];などと文字一文字ごとに配列の要素として確保しなければならないのであった、なるほど文字長を(上限を除いて)気にしなくていいstringがC++/C#で導入されるわけだ(翌日文字列長を前もって知らなくてもchar[]でよいことがわかった)。そしてインデックス抜きのcharVarには配列の先頭のメモリアドレスの値が入っているので、そのままscanfに与えることができるのだということだ。並列計算のプログラムを書くときにインタラクティブな文字入力は必要ないのでこれ以上深入りしないでおくが、C言語でプログラミング入門をやろうとしたら、やりたい処理のみならずハードウェア寄りの事情も知らなければならないのではなかなか難しいだろうと思われる。#includeや&を「おまじない」で片づける必要もなく、input()でするっと入力を得てprint()で柔軟に暗黙の型変換を通して出力してくれるPythonが初心者には向いているだろうと(かつてAutomate the Boring Stuff with Pythonでプログラミングを始めた)私は思う。明日は6章から。

Photoshop、今日はhttps://helpx.adobe.com/photoshop/how-to/blend-two-images-gradient.htmlでグラデーションを使ったレイヤーマスク。ドラッグの始点からグラデーションが始まり、終点で終わる。そのため短くドラッグすると急激に透明度が変化し、長くドラッグするとゆるやかにフェードする。グラデーション単体では不十分なこともあるが、その場合はブラシでマスクを描き足すことで調整する。

f:id:napier_0b:20190804174933p:plain

f:id:napier_0b:20190804175015p:plain

円状グラデーションだけではアヒル的動物がネコの顔を思い出しているにすぎないが、そこにブラシで塗り足して腕を加えると「なんだこの書類は!?」と上司のネコに詰られたことを思い出しているような印象が与えられるわけである。適当なことを言っているがそういうわけでCC0のアヒル的動物の写真と猫があくびをしている(部下を詰っているわけではない)写真の合成例であった。これもCC0としておきます、どうぞお好きに。

https://helpx.adobe.com/photoshop/how-to/composite-image-with-blend-modes.htmlでは除算や覆い焼きなど、和訳しないほうが検索しやすくていいなと思わないでもないレイヤー描画モードについて扱った。「カラー背景+白黒エフェクトを除算」がなんだかいいなと思った。

https://helpx.adobe.com/photoshop/how-to/match-color-tones-composite.htmlでは色調を合わせるためにレイヤーを複製してフィルター>ぼかし>平均、レイヤーモードをカラーや色相にしてクリッピングマスクとすることで直下のレイヤーにだけ影響するようにするというワークフローを理解した。クリッピングマスクもブラシで調整できるので、変えたくないところを黒く塗ればいいということである。

VRゲーム制作では新しいレベルのためのオブジェクト配置をしているが、接地面をピボットにすることの重要性を痛感している。Blender2.8でそのあたりをちゃんとする方法も近いうちに調べておきたい。

ABC136。久しぶりに出たAtCoderコンテスト、なんとかDまで解けた。CでYes/NoではなくYES/NOと書いてしまいペナルティ5分+原因究明2分を無駄にしてしまった、悲しい。D問題は10^100回の移動などというべらぼうな値に「シミュレーションするな」の念をひしひしと感じた。結局すべての子はRLとなっているマスに囚われ10^100に近い回数反復横跳びを強いられるのである。...L][RR...RL...LL][RR...という単位で分けて、各ユニットのうちでRL牢獄の左右にそれぞれ何人いるのか計算して出力することで答えを出した。