baruku07のブログスマートフォン用の表示で見るbaruku07のブログ2020-02-11サンプル問題が普通に解けないPythonのサンプル問題をついに解いた。以下,正しさは一切保証しません。キーワードにひっかけないため試験名は一切書かないけど何のことかわかりますよねと。設問1まず,この試験お得意の「問題文読めてますか?」である。あることを知っているからあっさり行ける。しらなかったらどうなんでしょう。これはPythonというか算数か数学プラス読解の問題ですよね。設問2cまず,cはリスト内包記法と[:]の文法で知ってるかどうか。ここはプログラミングの問題と言ってもよさそう。これ算数か数学か物理では?eは下のコメントからして,こんなの今いるところから方向なんだから自分自身の現在の居場所以外ありえない。これはPythonの文法のselfの問題ともいえるけど,これも算数か数学か物理では?もちろん,コンピュータでお絵かきしたことあれば常識だろうけど。ffはまあ関数の仕様読めますか?だけど,関数の意味を考えたらあてはまるものはほとんどない。Pythonを何も知らない私は,二変数なのになんで一個なんだと思ってしまうが,まあクラス内のメソッド定義(関数というのか?わからん)のselfは書くけど呼ぶときは省略というPythonの文法的お作法でもたぶんあるんでしょう,後のハッシュのとこ考えてもこれしかうまる選択肢はないしで埋まる。最後のスタックの部分(g,h,i)私の能力では,何書いてるかがさっぱりとわからない。わからないけど,この問題は出力をつけてくれるという親切なヒント付き。いうか,そうしないと基本の範囲の難易度ではないということでしょう。出力の最後の要素を眺めていると,2つ目の要素がある条件を満たしたときに消えている。いうことは,iは末尾の要素の消去と考えるのが自然。スタックなんだから,後から積んだ要素が先に消えないとおかしい。ifのtrueのときにrestが1ずつ減っていっていて,出力もそんな感じで減っていってて,減り終わったところで末尾の要素が姿を消しているのでこれで良いでしょうと。gの条件判定はrestが1になって0には行かずに消えるとなってる。なると,そこの判定条件は1かそれより大きいかになる。whileがopnoの条件で消えてるのにopnoがどこで変化されてるかわからない。だいたい,繰り返し命令かからなかったらopnoが永久に変化しないで終わりってこと?と思って良く見返したら末尾にopnp+=1がある。繰り返し命令が一回も呼ばれなければ命令が元の命令列の長さだけ呼ばれて終了ということになる。いうことは,逆に言えば繰り返しが入ったときにはopnpを操作してあげないと,途中で終了という悲しい目に合う。よって,opnpを書き換える選択肢が正しい答え。解き終えて全般的にPythonを読んだ気は全くしない。座標平面状でのお絵かき常識と,全体の意図をなんとなくとらえるカンと誘導をうまく使える力を聞いている問題。こんなのは座標でやってるんだから,長さに方向でやってて,そんなの当然rcos(x)にrsin(y)とか,それはいわゆるプログラミングの知識やスキルか?と言われると???なのである。応用のアルゴリズム問題がそんな傾向で,個人的には基本よりやりやすいと思っているけどそれに似ている感じ。情報系以外の大学理系の人でもノー勉ていける選択肢が増えたのかな?というイメージ。あと,なんとなくかしこな大学生有利な感じな気もする。いうのがかしこな層は,そもそもこの資格試験に対して意義を見出してなさそうので意味ないような。この試験,どこに向かっているのだろうか。あと,こういうのはいくら本で勉強していても,暗黙の数学っぽさを随所にからめられて,その素養がない人はどれだけ勉強してもだめですよみたいな。いう問題は無限にパターンが作れるので,専門系の対策は難しそう。02:50サンプル問題が普通に解けないTweet広告を非表示にするもっと読むコメントを書く2020-02-10c++を手元で実行した経験が少ないので出力形式に気が回らない・・・ABC154のD問題をやっていてはまった。coutで桁数によっては突然指数表記になるとか知らないし・・・D問題を見て,スクリプト言語だと真面目解法は間に合わないかもしれない,と思って,c++で書き出す。紆余曲折の末,解説放送と同じ発想に行き着く。途中,何回も挫折しながら書く。AtCoderの初心者マニュアルみながら書いてレベルだし,関数はラムダ式で代用で問題ないという初心者本に頼ってたりもする。一時間ぐらいかけて書いたところで提出。だいたいのケースで通っているのだけど,なぜか一部のケースで落ちてる。小数計算を割けずに書いてるので誤差累積?でもこの程度でそんなのあるわけないだろとなって,時間を終える。やけくそで最後で同じ解法でスクリプト言語で出したらきっちりとTLE。ところが同じ言語で通ってるのが多数あったりしてショック。あと,書きながらk個分のインデックス真面目に考えるのだるいし,キューに考えてる部分の要素を入れておいて自然に最初に入れたの取り出すとかが使える人ならすっきり書けるんだろうなとか思って書いてたら,解説放送そうしてて参考になったりとか。この問題できないと茶色すらでないという昨今の情勢は厳しすぎのような。問題文が読めてifとforがわかれば茶色という世界を信じてたので,まあたいして勉強せずに茶色にしておいてから,後からがんばって緑にしますかと思ってたあてがとことん外れてる。救いは,c++のさわりのさわりの部分は思ったより時間かけずに理解できたことだけど。00:24c++を手元で実行した経験が少ないので出力形式に気が回らない・・・Tweet広告を非表示にするもっと読むコメントを書く2020-02-08液晶追加で買った(32インチ)家に帰って作業するときに,PCのディスプレイをみていると目がちらついてくるようになった。目がちらつく対策でディスプレイを買うのだから,EIZO一択である。買い足す前も,EIZOの27インチのWQHDだけど,それでも文字を拡大しないと見えにくくなってきた。Windowsのフォントレンダリングが私に会っていないのか私の目が悪くなり続けてるのかのどっちかはわからないけど。拡大をしてから見ると27インチだと情報量が少なくなりすぎてどうしようもない。近年はiPadでごろ寝でブラウズが中心だから,PCのディスプレイは書くときに眺めるものだった。書く場合は,編集のときの文字の大きさやフォントはわりと自分で選べるので,文字が見えにくいという問題はあまり感じなかった。読む場合はなかなかそうはいかない。ここのところ疲労が抜けない要因やPCに向かえない原因をずっと考えていて,それでたどりついたのが,ごろ寝のときの姿勢がたぶん相当悪くて,疲労を蓄積させている可能性。これをやめることを真剣に考えようというのがそもそもの始まりである。ディスプレイから極力離れることが一番良いのだけど,次善の策としてPCディプレイ以外で画面を見る時間を極力減らす,ということでやってみうかといった感じ。お金は飛んでいくけどね。15:05液晶追加で買った(32インチ)Tweet広告を非表示にするもっと読むコメントを書く2019-12-31今年買ったもの(2019)1年の振り返りを書きたいが何も思いつかない。今年買ったものをだらだらと列挙してみることにした。i7)液晶ディスプレイ(4枚)食洗器ホットクックヘルシオ商品名でひっかかると嫌なのでぼかしてるのがいくつか。PC6月頃になぜか変な価格の動きをしていた(異常に価格が下がっていた)ので,思い切って2台買った。i7が乗っているのを1台・i5が乗っているものを1台。PCなんだけど,35WのCPUが乗っているというのが最大の素晴らしい点。SSDの換装が難しいことだけが欠点かな。ノートPCはCPUが非力なのかファンが回りまくるのが頭にきてたので。Cの端子もついているも良い。Cをつないで,ディスプレイ側にキーボードとマウスをつないでおくと,ノートPCとこのPCでディスプレイ・マウスを共用するのに便利。できればPC側からも映像信号をType-Cで送れるようになってくれると良いんだけどな。後Type-Cがディスプレイ側に2系統付くようになってくれる未来とか来たら最高なんたけどね。微妙な欠点としては,ディスプレイが4Kのマルチディスプレイになってからは悲鳴を上げることが多くなったことぐらい(これは私の使い方が悪い)。C付23インチ(2枚)とにかく普通に使う分には優秀の一言につきるディスプレイ。セールで2万前半で買ったような気がする。デイジーチェーンでマルチディスプレイがいけるのもありがたい。PC-Dell(sub)-Eizo(main)と使うのが,普通の人にとっては良い構成だと思う。今年前半を乗り切れたのはひとえにこのディスプレイのおかげにつきる。4Kの世界を知ってしまった今,この構成ですらいらっときてしまう自分がいる。23インチFHD使うとストレスが。PCのところにも書いたけど,type-Cでつなで,ディスプレイ側にキーボードとマウスを置けるのは本当に大きい。Type-Aでも同じことはできるが,Type-Aは指すのが面倒なので嫌なんですよ。4Kディスプレイ(27インチ1枚・32インチ1枚)このブログでも取り上げた。最初からケチらず32インチを買っておけば良かったの一言につきる。マルチディスプレイの解像度は合わせておくにつきる。一人暮らしのときにこれ買っておけばたぶん落ちこぼれずに済んだんだろうな・・・というぐらい素晴らしい機械。自炊しなくてもあると良い。コップと皿を贅沢に使えるというのは素晴らしい。コップを洗うのが面倒で水をボトルからそのまま飲むとか,コップ洗うのが面倒でボトルから水を飲まないといけないけど2lボトルが重いので飲むまでの決断するまで時間がかかるとか,コップ洗いたくないから紅茶やコーヒー淹れるまでのふんぎりがつかずにだらたらするとか,して溶けた時間がこれまでの人生でどれだけあったことか。皿洗いたくないからあっためずに容器のまま食べるとか,そういう食べ方してるとついつい食べ過ぎになりがちになるとかそういうのも防げるわけですよ。これ私がありえないレベルでダメ人間だから素晴らしい機械だと感じてる可能性もあるが。ホットクック今年の前半はこれで生命をつないだといっても過言ではない。包丁・まな板がおけるスペース作ったものを展開するスペースや容器がそろっていれば使いやすいマシンです。自炊するならあたりまえだろ?と言いたいがこれができれば苦労しない。ヘルシオを入れて以来,スペースが狭まった極度に使いにくくなった。ポトフで適当に野菜炊いておいて野菜補給を一品分作っておく,という使い方で前半をしのいだ。シチューも良く作った。最近は豚汁専用マシンと化している。ヘルシオホットクックよりさらに簡単なマシンでびびった。取っ手なしフライパンを使う,というのがわかってから使えるようになったマシンともいえる。肉を切って野菜をきって入れてまかせて焼きするという使い方。ヘルシオもホットクックもこれで全部を賄うのはつらいが,とりあえずこれで何品か作っておけば野菜が補給できてかつ買ってくる総菜が減って良しという考えの自炊。23:52今年買ったもの(2019)Tweet広告を非表示にするもっと読むコメントを書く2019-12-15フォルダの結合のヘルパークエリを理解にかかることにした(1)今年に入って,PowerQueryでフォルダ内部を結合しまくってる。1つのシートの中に4つぐらいのフォルダを結合したものが別々に入ってくると,うっとおしくて仕方がない。この補助クエリというやつのせいでクエリがかさんで仕方がない。フォルダを結合するときは相対パスを使う関係で,クエリ中の絶対パスを消しにかかるのだが,この書き換えをするときに元クエリだけでなく補助クエリまも書き換えが必要である(しかもそれに気付くのに相当かかった)。1個ならいいけど,4つあると2*4=8である。この補助クエリのせいでクエリのコピーで似た処理を複製することもままならない。いうことで,フォルダの結合のクエリをまじめに理解することにした。ヘルパークエリ以外のクエリはこんな感じである。ヘルパークエリが絡んでるのは囲んだ2か所である。キャプチャのソース全体。ファイル"の2つがヘルパークエリーに絡んでいることがわかった。結論を先にまとめとくと,ファイルの変換([Content]))各行のテーブルの実態を得るために使っている。Table.AddColumnの各行にこの関数を適用して,ほしいテーブルの実際を各行に対してくっつけていくために使っている。ファイル"1.でくっつけたテーブルの実態をTable.ExpandTableColumnで展開するときに,引数として展開したい列を指定することが必要になる。それを得るために使っている。以下,1つずつ見ていく。関数ファイルの変換の実態は次のようになっている。ソース1行目はExcel.Workbookにパラメーターを渡している。元のクエリの関数呼び出しを見ると,これはファイルのContentの行,すなわちファイルのバイナリを渡していることがわかる。Folder.Files(絶対パス)で呼び出したテーブルの実態はこんな感じである。Excel.Workbookはバイナリを渡すと(ファイル名でない),その中身がExcelだった場合は,全部のシート・テーブル・範囲など使えそうなもの一覧で返してくれる関数である。レコードが返ると書いてあるがテーブルが返ってくるようである(見た目や後のアクセスの記法から推察して)PQを使い始めた最初,セルの中にバイナリの実態があるという考え方になじめずに戸惑ったのだがそういうものらしい。そこからソース{[Item="テーブル1",Kind="Table"]}[Data]として,得られたテーブルの中から指定したテーブル名と一致する(この場合はテーブル名「テーブル1」のものを引っ張ってきた)行を取り出して({[Item="テーブル1",Kind="Table"]}),"[Data]"で実態を取り出すということになっている。この関数はExcelファイルの実態を与えて,指定したテーブルの中身を返す関数となっている。中身の指定は生の値で書かれていることに注意である。この関数の呼ばれ方ここで定義した関数はこんな感じで呼ばれている。ファイルの変換([Content])),要は,Folder.Files()で読み込んだテーブルの各行に対して,ファイルの実態を渡してテーブルを返して,それを一列くっつけるということをやっているのである。関数適用後のテーブルを見ればこれはわかる。ファイル"各ファイルに対して中身くっつければそれでほぼ目的は達成のはずである。特定のファイルを持ち出してるのかがわからない。このファイルを呼ばれている部分を見てみる。ファイル"))),Table.ExpandTableColumnなんで,どうやら中身を展開していることはわかる。ファイル")"がある,ということは自然に考えて展開する列名を取得していることがわかる。リファレンスをみても手動で展開してみてもそれで間違いなさそうである。全部の列名を展開するだけなのにわざわざ列名を取得する必要があるのか。わからないけど,これはそういうものらしい。全部を一気に展開するというのがみつからない(そんなのはないとまで書かれてるのもみかけた。ここは真偽はまだ確かめてない)。15:33フォルダの結合のヘルパークエリを理解にかかることにした(1)Tweet広告を非表示にするもっと読むコメントを書く2019-11-17プログラミング的思考について周囲を見てて思うこと(1)(以下は全て何の根拠もない私見。言いたいことを正しさ関係なく自由に主張している。いちおう裏にソースとかないこともないけど面倒なので略。推敲もあまりしてない。文字にするとなんか正しいこと言わなければならないとか,勝手に信じ込む人がいたりする界隈なので最初に注意。)小学校プログラミングはプログラミング的思考と言って入れは全てが許される感が出ている。(1)にしてみただけで、(2)以降があるかはわからない。言いたいことをざっと書いてるのでツイートして並べてるのと論理構成のレベルは大差ない。プログラミング的思考については、半径3m以内でおおまかに2つの問題が観察されていてプログラミング的思考以外に文科か言ってる重要ポイントを全部落としてるプログラミング的思考そのものを誤解しているというのがある。基本的にこれらを言葉で説得して解くのはだめだと思ってて、まずプログラミング体験して!って言うようにしてる。だいたい、お上で議論するには言葉が必要で仕方がなく言葉になっている、それも本質を切り取っているか怪しい言葉なんだから、そんなものをはいそうですかと素人がいきなり信じて良いわけがない。プログラミング的思考と思う人たちプログラミング的思考に戻る。プログラミング的思考だとして、あろうことか低学年からそういうのを計画的にやっていくことが大事だといってる人々がいる。きを何度読んでも、小学校で順次・反復・分岐の概念をきっちり習得させろとは読めない。手引きを熟読した限りでは、今回小学校に求められているレベルは、何かのやりたいことをコンピュータにやらせるために、人間感覚でなくちょっとだけコンピュータ感覚に合わせて手順を明示化してみて、実際にコンピュータで動かしてみてうまくいったりうまくいかなかったりしたプロセスやプロセスから得る学びがメインだと読める。余裕があればそこで得た知見を少しふりかえったり抽象化して日常のいろんなとこで意識してみましょうね、で十分である。その範囲内において、制御構造の学習(特にこれを言語化して抽象化して学習すること)は必ずしも必要とされていない。コンピュータに何かやらせたいという意図があったときに、それを実現したいとなったときに、制御構造必要だよね、となったときに制御構造が登場するのが自然。それも最初は制御構造の用語は必要ない。問題にあわせて「こういうときとこういうときでわけて考えないといけないよね」「くりかえさないとね」といえば十分。用語とか概念は、そういう体験が積み重なってきたときに、で、そういうの良く出てきてるよね、実は名前がついてて・・・と体験を抽象化する形で制御構造の話を出したければ出せば済むだけの話である。多角形の例を考えてみればよい。ねらいを達成するためにはループは必須ではない。小学校でフローチャートを万能としてる人々はね・・・だいたい、フローチャートはできの悪い疑似言語として使われていることもあるぐらいである。フローチャートに置き換えられているはずである。なっていないということは、フローチャートが微妙なものだからということだと思わない?そういう人たちは技術の解説でUMLが出てきた話なんかもしらない。Scratchのほうがフローチャートよりわかりやすいと思わない?だいたいScratch使ってる人がみんなフローチャート使ってる?使ってないでしょ。Scratch使いこなしてもの作ってる人がプロクラミング的思考できてないと思う?良く読めば、要はやりたいことを機械に落とし込むのがプログラミングで、そのために必要な思考がプログラミング的思考ということは手引きからちゃんと読める。それに照らし合わせると、Scratchでもの作ってる人たちは、フローチャートは描けないけどプロクラミング的思考はできてますよ。その思考なかったらコンピュータ動いてくれいし。そんなScratchでちゃんと作れてる人たちに、変なペーパーテストと評価基準でプログラミング的思考ができてる人に、あなたはプログラミング的思考ができてません、とか評価するの(プログラミング的思考そのものは本来は評価する必要ないが、各教科の評価規準の作り方がへたくそで実質的にそうなった場合。)、おかしさにもほどがある。だいたい、まともな人が書いてることにフローチャートの話はほとんどでてこない。だいたいフローチャートの話ばっかしてるのは、ろくにプログラミングもしたことはないけどプログラミング教育と言ってる人々である。素人がそんな著者の属性判断してそれがまともかどうか判断できるかわからないから、それを信じる人が増える。そのものにフォーカスを充てるのは、アルゴリズムにつなげるという主張もある。それは高校段階の話である。中・高の内容そのものが理解もできてない小学校の人々が考えた、自分なりのつながるなんて有害無益になる可能性がある。情報の科学手理解の教育の一部として、アルゴリズムのような情報科学入門みたいなことをやることはありえる。情報の科学的理解は立派に情報活用能力の一部である。ITあやしい小学校教員がそんな教育やってる余裕あるの?というかコンピュータ関連、それよりもっと教育してきてほしいことあるし。文字操作とファイル操作をできずに中・高に送り出してる人たちどんなにいる?プログラミング的思考だけじゃなくて、それちゃんと小学校で終わらせとけって指導要領や指導要領解説で書かれてますが?そんなにお上のこと持ち出してがーがーいうなら、都合の良いとこだけ読むなと言いたい。HDの問題は、さすかに不便すぎるので32インチ4Kを買い足すことを決断した。EIZOの27インチ4Kを追加したかったのだが、なぜが同じディスプレイが前回購入時と比較して1.5万も値上がりしてる。頭にきたので32インチを買った。32インチを買っての感想は、まあ、1画面で何かを集中して読む分(要はWebブラウズ)には少し縦が長すぎるかなと。椅子とディスプレイの高さをちゃんと調整してあげないと首が少し上向きになるので痛くなるのである(アジャストの効きやすい自宅になるアーロンならまた話は違うんだろうけど)。Excel方眼系の作業はものすごくはかどった。想定した通り、だいたいアプリケーションを3枚並べて使おうと思えば使える感じになった(125%表示)。27インチで125%常用はしんどいが、subで125%にしておく分には問題ない。倍率は揃えておいたほうがいろいろと楽なのでそうした。メイン32・サブ27で高さの差はでるが、両方同解像度なのでアプリケーションの高さを調整してから反対側ディスプレイに移動するという手間がなくなったのでだいぶん楽。ギャップがないほうが良いのは良いが。32も27も奥行きあまり変わらないからというレビューが出てたが、さすがにフレームの太さは違った。これはマルチディスプレイするときに注意。最近のフルフラット感覚でふちなし感覚でマルチできると思ってたけど、32はそうはいかない。32を2枚にしたいけど、そうすると机中央部分が継ぎ目になる問題が発生しそう。アームを入れて作業ごとに位置をうまくかえながらやるのがベストなんだろうけど。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。