【2023年度】東京工業大学二次試験開示成績調査結果
挨拶
皆さんこんにちは。東京工業大学情報理工学院の非常識という者です。今回、令和5年度に東工大に入学した学生、所謂23Bを対象に二次試験の開示成績を個人的に収集したのでその結果をここで発表したいと思います。また、この試みは同学22Bのほってぃ氏が行った「2022年度東京工業大学22B系所属調査」から強い影響を受けています。下記にリンクを貼るのでご参照下さい。
アンケート概要
開示成績はGoogleフォームをSNS上で拡散し、皆さんに回答して頂くという方法を採りました。匿名型アンケートなので、信憑生が100%担保されているとは限りません。回答に不備がある可能性もあります。実際、入力ミスで合計点が855/750点になるものや、悪戯で数学の点数を191.9点と回答したものがありました。そのような回答はごく一部であり、私もよく確認して除外したつもりではありますが、完璧とは断言できません。また、そもそも回答者が当該のSNSを利用している人に限られるため、標本に偏りがある可能性も否めません。これらの事に留意しつつ、あくまで参考程度にご覧ください。また本データを悪用することは絶対にやめて下さい。
調査内容
以下の内容をGoogleフォームで調査しました。
参加者数:286人(理:54,工:89,物:27,情:44,生:25,環:17落:30)
対象者:令和5年度一般選抜(前期日程)を受験し成績開示を受けた者
実施方法:非常識が作成したGoogleフォームをTwitter上で拡散、またLINEの新入生オープンチャットやDiscordの23Bサーバー等にリンクを貼った
実施期間:2023/05/08~2023/05/16
質問内容:以下の内容を質問した
【任意】twitterの名前(IDかユーザネームどちらか)
現在の所属学院
志望学院
各科目の開示成績
言い残す事
情報提供
同じく23Bのかいむ氏も同時期にアンケート調査を行なっていました。調査内容がこちらの統計を分析するにあたって有用であったため、調査結果の共有を打診したところ承諾して頂けたのでその内容もここに記します。
調査内容
以下の内容をGoogleフォームで調査しました。
参加者数:165人(理:33,工:45,物:21,情:28,生:15,環:12落:4受:7)
対象者:令和五年度に本学学士課程に入学した者及び本学志望の受験生
実施方法:かいむ氏が作成したGoogleフォームをTwitter上で拡散、またLINEのグループにリンクを貼った
実施期間:2023/05/09~2023/05/12
質問内容:以下の内容を質問した
【任意】twitterの名前(IDかユーザネームどちらか)
現在の所属学院
志望学院
現在の学院の満足度
転院を考えているか
第二志望までしか出願できなくなった場合の出願学院の変化と理由
第三志望の学院に受かった場合東工大に入学するか
第二志望までしか出願できなくなる事に対する意見
前提資料
東工大ホームページの下記のページに掲載されている令和五年度入学試験状況統計資料です。適宜参照して下さい。
回答者学院
まず、回答者の統計についてです。このアンケートは一般選抜による入学者を対象にしているため、回答率を出す際には学院の全人数ではなくこの人数を使用しています。これを見ると、回答率は生命、環社、物質が非常に低く、対して理と工、特に情理が高い値を示しています。これはアンケートが主にTwitter上で拡散されたことが原因と考えられます。理、工、情理には陰キャが多く、陰キャはTwitterが好きなので生命、環社、物質の人々は総じてTwitterを利用しない傾向があるためです。回答率の偏りを避けるため執筆時点で257人のメンバーがいるLINEの新入生オープンチャットでも回答を呼びかけたのですが、あまり効果は無いようです。この三学院の人々は果たして何処にいるのでしょうか…?以下この偏りを念頭に置いて下さい。
第一志望
第一志望は理、工、情理が圧倒的に多い事が分かります。標本の偏りを考慮しても、この三学院は特に人気であると言えるでしょう。
第二志望
第二志望では一転して理が少なく、工が更に増え、生命、環社、特に物質が多くなってきました。情理が僅かなのは最低点から自明でしょう。理が激減し物質が増えた理由は、化学系学院を志望する人が第一を理、第二に物質を出願したからだと考えられます。また、滑り止め目的で第一に工、情理を出した層も多少物質に出願していると考えられます。工が更に増えた理由としては、第一を情理で出した層が第二に分野が近しい工に出願したからだと考えられます。
第三志望
第三志望は見るからに物質、環社、特に生命が異常なまでに割合が高い事が分かります。アンケート回答者でこの三学院に入学した人が少ない事を考えずとも、明らかに滑り止めとして利用されている事が分かります。
第一志望ごとの第二第三志望の出願状況
第二第三志望に出した学院を、第一志望に出した学院別に見ていきましょう。
理学院
理が第一志望の人は第二志望に物質に出す人が一番多いようです。次点で工にも多数出願しています。第三志望は相変わらず生命が圧倒的人気なようです。
工学院
工学院が第一志望の人も第二志望で物質に一番出すようですが生命、環社にも多数流れています。第三志望はやはり生命が一番ですが、第二第三志望には特に強烈な傾向がある訳では無さそうです。
物質理工学院
物質が第一志望の人はやはり最低点的に第二志望を生命で出す人が一番多いようです。また、第二第三志望で理学院に出している人が散見されますが、最低点的に厳しそうです。
情報理工学院
情理が第一志望の人は第二志望は圧倒的に工学院が好きなようです。第三志望は生命と同じくらい物質にも人気があるようです。
生命理工学院
生命が第一志望の人は少なく、データが十分ではありません。が、最低点的に第二第三にどこに出すかは重要ではなさそうです。
環境・社会理工学院
環社が第一志望の人も同じく少なく、データが十分ではありません。が、第二志望は生命と物質が拮抗しているようです。
学院別入学者の志望順位
今年実際に第何志望で何人がどこの学院に入学したのか見ていきましょう。第二志望で工に入学した人が多いのは情理落ち工が多いからと考えられます。それより、ここで注目したいのは第三志望で生命に合格した所謂「不本意生命」の存在です。生命の回答者25人中半分近い11人が不本意生命である事が分かります。(あまり良い表現ではないと思っているので、以降「不本意生命」という表現は使わず、代わりに「第三志望生命」と呼称します。)
これは第三志望生命の11人が第一、第二志望でどの学院に出願したかを示した表です。11人全員が情理、工を第一志望に出していました。また、第二志望でも工に7人も出願しています。
二次試験得点
では、次に二次試験の得点について見ていきましょう。データを元に箱ひげ図を作ったのですが、Googleスプレッドシートで作る箱ひげ図には中央値が載らない仕様のようです。なので中央値を含めた具体的な数値の表も併せて載せてあります。
合計点
合計点では見てわかるように情理が他を凌駕しています。また、生命の四分位範囲が圧倒的に狭いのも大きな特徴です。
英語
英語の点数は学院ごとに際立って大きな差異が見受けられません。よって、英語ではあまり差がついていないという事が分かります。
数学
数学においては学院ごとの差異がより明確になりました。やはり東工大は配点の高い数学が合否を決すると言っても過言ではないでしょう。
物理
物理は数学ほど差が開いているという訳でもないですが、確かに差は存在します。この年の物理の問3が原子の難問だったため、そこを解けた人と解けなかった人で点数が大きく分かれているのかもしれません。
化学
化学は物理ほど差はついていないように見えます。この年の化学はかなり簡単で、出題ミスで全員に点が入ったりもしたためにあまり差がつかなかったのでしょう。
Twitter23B界隈とそれ以外の合格者の比較
合格者のうち、アンケート回答時にTwitterの名前かIDを入力した人としていない人とで合計点を比較しました。どうやらTwitter23B界隈の人の方が結構得点が高いようです。ツイッタラーに勝てる訳ないだろ!(天下無双)
言い残された事
アンケートの最後の自由記述欄「最後に何か言い残すことはありますか?」に入力された、成績開示を受けた人々の魂の叫びをどうぞ。
ないです
うんこ
やりますねぇ!
物理の採点甘くないか!? 本当だからだ!!!!!
あと4点で工学院最高点だったのでくやし〜
英語理科を安定させましょう
コスパ最強
コンテンツ力なさすぎる
英語をもっと勉強してれば、最低点+2 などということは起きなかったね
まさか苦手だった化学がここまで伸びるとは思わなんだ
ちょうど半分にしたかった
くそったれ!
アンイク。
𝓤𝓷𝓬𝓱 𝓑𝓾𝓻𝔂
5点落ち悔しいっすね
なーんにもおもしろくない
数学最低点は、俺だ!
過去問平均は260だった!(数学
一日目の調子を狂わせた兄貴を許さない
慶應理工落ちです
顔ない
つまらん
合格最低点+2点
英語勉強しなくても受かるよ
東大目指さなかったことをほんのり後悔
講義中にこれ送信してる時点で人間不合格
数学の採点は厳しめなきがする
ちんぽ
数学の大問4はしっかり計算ミスしたみたいです
一浪してもぎりぎりじゃねぇか!
やはり数学ゲー
英語の和訳しっかりやれ。七割くらいくると思ってた和訳が本当に0点。みんなのために僕が身をもって東工大の和訳は文法しか見ないことを証明しておいたぞ😁👍
この1年で数学を上げて来年受かる
つまらん
不本意物質です。リスカ案件
泣いた
114(いいよ)!!
数学の予想点135→150 化学の選択問題、2つが正解で1つ正解を選ぶ→5点はほぼ確実 数学は勘違いがあっても方針があってればある程度点が来ると見ていいかも?
英語、現役より30点下がりました
数学許さん
くるまっち
「入試会場の強いやつに勝てる奴が勝者じゃない」の蚊以上の強いやつに勝てる奴が勝者の部分
物理65????
わんわん
Twitter予備校が俺(情理1点落ち)を輩出しました。
数学が一番低いってどゆことですかね
数弱が東工大受かってすいません
あ
数学0完で155点からすると日本語書くだけでも点は入るぞ(多分)
化学の出題ミスのせいで工学院落ちた可能性があるのが許せないです😡
数学は自己採点1完3半(方針が合っていたのは3問)でも224点あったから、方針が合っていれば結構点数くるはずです!時間がないときは「日本語で方針を書く」だけでもいいことあるかもです!
数学がもっとできてれば…!
女子枠今年からじゃなくて良かったぁぁ真面目に
期末の過去問くださいお願いします
どうも、数弱物弱理学院です
数学できたらなんとかなる
🥺🥺🥺
英語で東京工業に入りました、英強王の称号ください。
特になし
数学2割5分でも東工うかる
貴方のmad大好きです
数学への未練のせいで、理学院を第1志望にしておけばよかったと絶賛後悔中
かなしい
過去問では物110化120安定させてたはずなのに
(注意)私は現役です。
いい人生でした
理科しか勝たん
コンテンツカない🫥
剣は生死の狭間にて大活し、禅は静思黙考の裡大悟へ至る。我が剣にお前は何れを見るものか。───『剣術無双・剣禅一如』
mad作り頑張ってください
最低点頂きました
「受かってしまった」感
文系説
英語激上振れ
化学の出題ミスを許すな
もっとギリギリだと思ってた
俺は原子を許さない
おれは間違いなく天才だ
東工大を愛します
東工大行きたい!
理学院最低点でした。
物理自己採-40点 おいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおいおい
非常識さんの女装アイコンガチ可愛いですね。 (情通行きます。)
授業ブッチ神父
落ちたと思ってても案外受かります
ぶっしつばんざい!
1年間で1分も勉強してなくて共テL48点の英語が一番点高くて草
情理蹴りあざす
ほ、本意工学院だし😅
化学で受かったと言っても過言ではない(物質理工の鑑)
うわぁぁぁ
来年はいります
思ってたより数学ってみんなとれないんだなって思いました。 1教科ゴミでもそれ以外ある程度とれれば受かります。
数学低すぎ
調査頑張って下さい!
集計頑張れ〜
卍英語で破壊したったwwwww卍
情弱です!理学院です!
化学がかなり最低点に近いと思う 苦手ではなかったので本番最終科目の疲れと弛みは怖い。
悔しいです
高校のOBで話す機会があるのでその際にこの調査の結果を使わせていただきたいです、、、
コンテンツ力ぅ...ですかねぇ...
化学キモチエエ‼️‼️‼️‼️‼️🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵🤩🫵
英語49点で顔ない🫥
いいいいイキってすみません⋯
情理+29
ちゃんと受かってた(吃驚
東工大オープン数学235点でした悔しい
なんか殺される直前みたいな質問だね(笑)
四年後強くなって帰ってきます
英語うんち‼︎
来年こそは東工大に入学するぞ!!
来年また挑戦します
物理61はきついよなぁ…。よう理学院受かったな(n=0)
合格するだけなら、数学より他3教科が大事まである
化学爆死
現役より数学が115点下がった
#現役不本意生命より一浪本命情理
不本意生命⭐︎⭐︎⭐︎拾ってくれてありがとう東工大!生命理工で自分の道を見つけます!
みんな高すぎじゃね 数学思ったより低かった
エンカしたいです。あと音MAD講習会よろしくお願いします。
どうやら答え2つの問題で片方間違えて片方合ってる場合は5点らしい
作問ミスがなかったら落ちてたっピ
英語の採点が例年より厳しい気がする
俺より英語低いやつはいるか?
情理申し込めばよかった
受験は運ゲー
採点甘すぎ笑
不服
何に使うんですか?
くっ…
半不本意工学院だけど幸せです
私はたけのこの里派ですgg
こんな学校に入るんじゃなかった…
第三生命サイコー
学びたい人だけ東工大へ来てください。 (学問や研究などの) チャレンジャーは大歓迎です。
凄く面白くない点数。超苦手だった化学がなんか奇跡起こした
数学でのハイエナプレイがうまくいきました
TKD!
\(^o^)/
試験当日にメガネ壊れました。何が起こるかなんて、最後までわかんないよ
当日数学三割東工大生 ギャグかな
情理に落ちた敗北者です。後悔はしていない。
これからよろしく 謎な志望順位の取り方がバレてちょっと恥ずかしい
Uuuuu
東工大は数学特化型が受かりやすいけど、絶対数学特化型になっちゃダメ
整理番号忘れたのに加え、出願時のメールアドレスも削除していたため、手動ブルートフォースアタックをするはめになった。
東工は数学ゲー
戦犯数学
本試英語が今まで(東工大冠3回)のどれよりも低くてビビった。英数は現役なのに1ミリも伸びを感じなかったので、現役は理科伸ばした方が絶対良いよ👍
数学が一番得意でした
来年から女子枠と同時に東工大数学は排除‼︎ 入試科目は英語、数学、物理、面接‼︎
求:数学5の倍数神話崩壊した人リスト
工学院+1でギリセーフ
アンケート結果楽しみにしてますね
英語9割嬉しかったです
4年間ありがとうございました
来年こそは合格します。
科目の得点バランスは考えましょう
ちんちん
【おまけ】第三志望が消滅した時何が起こるか
さて、ここからはおまけということで情報理工学リテラシーの授業内のディベートで私が以上の結果を使って発表したことを書いていきます。
導入
今回のアンケート調査は、元々この情理リテのディベートで優位をとれるようなデータを得ることを目的として行いました。そのテーマは、
東工大入試で第三志望学院まで選べるようにするべきか否か
でした。これがどういうことかというと、実は東工大は令和6年度から一般選抜において学院を第一第二志望までしか出願できなくなるのです。
ディベートでは2つのグループが肯定と否定に分かれそれぞれテーマについて議論し、勝敗を争います。そう、このディベートでは勝敗がつけられるのです。私は否定の立場に割り振られました。
さて、そうなったからには第三志望まで選べることに対する否定の意見を出さなくてはなりません。それについては色々考えました。「第三志望に滑り止めで生命などを出すことが出来なくなり、第一志望で出した本当に生命理工分野を学びたい学生がより入学しやすくなる」であったり、「それにより最低点が下がるかもしれないが、二次試験の点数が高い学生=優秀な学生とは言えない(ただ大学受験の勉強しかできない人かもしれない)ので問題ない」という具合です。しかし、それでは埒が明かない。そのような論はあくまで妄想の域を出ず、確固たる根拠に乏しいからです。逆に言えば、それを裏付けるデータが何かあれば一気に強力な論となりこの勝負で大きなアドバンテージとなります。そんなこんなでデータをどうにか調達できまいか思案していたところ、天啓を得ました。
今年の入学生の開示成績のデータを集めて、仮に今年第三志望が無かった場合どうなるかをシミュレーションすればいいのでは?
幸いなことに、私にはアンケートを拡散するのには十分な知名度がありました。善は急げ、私の好きな言葉です。早速成績開示が始まる5月8日に合わせてアンケートを作成し予約ツイートを行いました。それがこのアンケートの正体です。さて、データも大量に集まり、後はシミュレーションをして予想を確かめればこの論破対決ディベートは勝ち確や!と思うのもつかの間、大きな問題に直面します。
第三志望が無くなったら、それに伴って第一第二に出願する学院も変わるのでは?
そう、私は単に第三志望を切り落として改めて学院を割り振ればいいと思っていて、例えば第一に情理、第二に工、第三に生命を出願していた人が怖気づいて第一に工、第二に生命に志望変更する可能性を失念していました。そして、私のアンケートではそれを問う質問はしていません。これはいけない。万事休すか。そんな中、救世主が現れました。
なんてことだ!!!そのデータくれ!!!
早速かいむ氏にDMを送り、こっちのデータも渡すからそっちのアンケートのデータを貰えないかと打診しました。幸いにも承諾して頂き、さあこれで一安心かと思うも何かが引っかかる。何か違和感を見逃しているような…あっ
この人、ディベートの対戦相手じゃないか!!!!!
なんと、相手は事実上の敵であったのです。敵にのこのこと手の内の開示を要求するだなんて、まるで私が非常識みたいじゃないか!まあお互い納得しているようなのでイーブンという事で…。
何はともあれ、これで第三志望が無くなったときの第一第二志望の変化が分かりました。ちなみにこれが最初に書いた情報提供です。もちろん私とは全く別のアンケートなのでそれぞれの回答者を一対一で結ぶことはできません。しかし、元々の第一志望の学院別に以下のような傾向を見出しました。
理学院:第一志望は理のまま変わらず、第二志望は元々の第二第三志望にあった物質、環社、生命のうち志望が高い方(つまり第二が工、第三が生命だった場合、第二は生命に変わる)
工学院:第一志望は工のまま変わらず、第二志望は2/3が元第二志望、1/3が元第三志望に出す
物質理工学院:第一志望は物質のまま変わらず、第二志望はほぼ生命に出す
情報理工学院:1/4が第一志望を元第二志望、第二志望を元第三志望に出す
生命理工学院:一番最低点が低いので志望に特に重要な変化は無し
環境・社会理工学院:第一志望は環社のまま変わらず、第二志望は元々の第二第三志望にあった物質、環社、生命のうち志望が高い方(工と同じ)
この傾向を念頭に、私のアンケートに回答した286人に対し今年第三志望が無かった場合の合格学院の変化をシミュレーションしました。このプログラムはGoogle Apps Script(Googleスプレッドシートを操作するほぼJavaScriptのプログラミング言語)を用いて実装しました。コードは最後に載せるとして、大まかな流れは以下の通りです。
今年一般選抜で入学した学生の学院別人数の16.5%をデータから無作為に抽出
抽出した人の第一第二志望を先述した第一志望学院別傾向に従い変更、かつ第三志望を削除
二次試験の合計点が高い順に志望に従い学院を割り当てる。定員は同じく今年一般選抜で入学した学生の学院別人数の16.5%とし、定員に達しても合格最低点と同じ点数の人は合格とする
各学院の合格最低点、及び第二志望で生命に受かった人数からそのうち元々第二志望を生命にしていた人数を引いた値を出力
以上を任意の回数実行し、(今回は100回行った)出力された値のそれぞれの平均値を求める
1番の工程についてですが、今回のアンケートでは学院の比率が実際とは乖離しています。そのため、そのままシミュレーションをしてしまっては例えば第一志望に工、第二志望に生命を出す人が多くなり、その影響で生命の最低点が実際よりも高くなるといった事が起きかねません。なので、シミュレーションの対象とする人を全学院、1番回答率が低い物質の約16.5%に揃える操作が必要になります。また、4番の工程は合格最低点と共に、今まで第三志望生命と言われてきた人々に対応する集団の人数を割り出すために行っています。第三志望が削れる事で、元々第二志望に生命を出していた人と、削れてから滑り止めとして第二志望を生命に変更した人が同じ立場に置かれます。そこで、後者を従来の第三志望生命に相当する集団と見なし、その人数を求めているのです。そして、1番と2番の操作には運要素があるため、出力される値をそのまま受け取るのではなく、これらの操作をを何度も行いその平均値を求める必要があります。
結果
まず、最低点についてです。
箱ひげ図がとんでもない事になっていますが、それは最低点が0になった時があるためです。生命なんかは100回全てにおいて最低点が0点となっています。私の書いたプログラムでは、定員に達した時にその学院の最低点を変数に代入するようになっているため、つまりこれは定員割れを起こしているという事です。いや、東工大で定員割れなんて起きるはずがないじゃないかと言いたくなるかもしれません。(実際言われました)しかしこれには理由があります。このシミュレーションはイメージとしては、23Bを全員集めて、「悪いが合否判定を改めさせて欲しい。全員志望学院をもう一度書いてくれ。ただし、今回は第二志望までしか書けないぞ。」と言って学院をもう一度振り分けるという事をしています。なので、例えば第三志望生命の人が、第二志望までしか書けなくなったときに第一第二志望を変えずにそのまま出せば、今年東工に受かっているにも関わらずシミュレーション上では落ちてしまいます。このシミュレーションの対象者は23Bに限定しているため、不合格者が出てしまうと席に穴が空いてしまうのです。これが定員割れの正体です。じゃあ今年東工大に落ちた人も対象にすればいいじゃないかと思われるかもしれませんがそう簡単にはいきません。今年実際に東工大に落ちた人は受かった人よりも遥かに多くいます。対して、このアンケートではたったの30人しか回答していません。なのでデータが足りず、これを含めてしまうと最低点が100点台になるというあり得ない現象が起きてしまいました。なので、定員割れを起こしている部分に関しては、その空いた席に今年落ちた人が入るんだな~程度に見て下さい。
さて、この結果で注目すべき点は、表の最低点0点を除外した平均点と今年の最低点です。(生命だけは全ての試行で最低点が0点のため、その平均が定義できていません)これを比較すると、第三志望が無くなった場合の最低点と今年の最低点は大して変わらないということが分かります。つまり、第三志望を無くしても最低点に大きな変化はないという事です。(小泉構文)ただ、情理の最低点は結構落ちているように見えます。これは第二志望までしか書けなくなったことにより第一志望に情理を出すのに怖気づいて出さない人が多数いたためです。次に、第三志望生命に相当する人数の変化についてです。
第二志望で生命に受かった人数からそのうち元々第二志望を生命にしていた人数を引いた値が、従来の第三志望生命に相当すると仮定しました。その値の平均が「第二志望数平均」です。その右は生命の空席の数の平均です全ての試行で生命は定員割れしているので、その空いた席の平均がこれです。前述の通り、今回のアンケートでは生命の回答者25人中11人が第三志望生命であると言いました。仮にこの空席の半分がそれに相当する人が入るとしても、「第二志望数平均」と合わせた数は11人を下回ります。つまりここから、第三志望を無くせば今でいう第三志望生命に相当する人数は減ると結論づけられます。
結論
結論として、以上のシミュレーションから以下のことが結論づけられます。
概して最低点は大して変化しない
情報理工学院の最低点は少なからず下がる。理由は第一志望に出すのを躊躇う人が多くいるため
今でいう第三志望生命に相当する人物の数は減少する
よって、第一志望に生命を出した、本当に生命理工を学びたい学生が滑り止めとして生命を出した学生に席を取られる事象が、第三志望を無くすことによって減ることを理由に私は「東工大入試で第三志望学院まで選べるようにするべき」というテーマに反対しました。ただ、これはあくまでディベートの授業のために仕方なくでっちあげた意見なので、実際のところ私は第三志望を無くすか無くさないかについてはそんなに深く考えていません。もう情理受かったんだし。だから怒らないでね。
コード
多分シミュレーションのソースコードも晒しておいた方がいいと思うのでここに置いておきます。が、クソほど汚いです。たかが情理リテで使うやつなんだから100行くらいで終わるんじゃね?と思ってまとめるべきところをまとめず、この世の終わりのような命名をし、ただ愚直に思いつきで書き連ねていったら大変なことになりました。書き改めようとも思いましたが、たかが情理リテのために二度と使わないコードを綺麗に書く必要があるか?と思いそのままにしてあります。
⚠これを読んで目眩や吐き気、その他の症状があらわれた場合でも責任は負いかねます。
function conduct() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const output = ss.getSheetByName('出力');
output.clear();
for(i = 0; i < 100; i++){
main();
}
}
function main() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('回答をソートする用');
const output = ss.getSheetByName('出力');
const n = sheet.getLastRow() - 1;
const new_n = 160;
let questionnaire = sheet.getRange(2, 2, n, 10).getValues();
let new_questionnaire = [];
let capacity = [24, 16, 27, 25, 53, 15];
let new_capacity = [0, 0, 0, 0, 0, 0];
let new_new_capacity=[0, 0, 0, 0, 0, 0, 0];
let lowest_scores = [0, 0, 0, 0, 0, 0];
let result = [];
let huhoni = 0;
let not_huhoni = [];
//配列をランダムに並び替え
for(var i = questionnaire.length - 1; i > 0; i--){
var r = Math.floor(Math.random() * (i + 1))
var tmp = questionnaire[i]
questionnaire[i] = questionnaire[r]
questionnaire[r] = tmp
}
//各学院16.5%を選ぶ
for(i = 0 ; i < n ; i++){
switch(questionnaire[i][1]){
case '生命理工学院':
if(new_capacity[0] < capacity[0]){
if(questionnaire[i][3] == '生命理工学院'){
not_huhoni[i] = '本意'
}
else{
not_huhoni[i] = '不本意'
}
new_questionnaire.push(questionnaire[i]);
new_capacity[0]++;
}
break;
case '環境社会理工学院':
if(new_capacity[1] < capacity[1]){
if(questionnaire[i][3] == '生命理工学院'){
not_huhoni[i] = '本意'
}
else{
not_huhoni[i] = '不本意'
}
new_questionnaire.push(questionnaire[i]);
new_capacity[1]++;
}
break;
case '物質理工学院':
if(new_capacity[2] < capacity[2]){
if(questionnaire[i][3] == '生命理工学院'){
not_huhoni[i] = '本意'
}
else{
not_huhoni[i] = '不本意'
}
new_questionnaire.push(questionnaire[i]);
new_capacity[2]++;
}
break;
case '理学院':
if(new_capacity[3] < capacity[3]){
if(questionnaire[i][3] == '生命理工学院'){
not_huhoni[i] = '本意'
}
else{
not_huhoni[i] = '不本意'
}
new_questionnaire.push(questionnaire[i]);
new_capacity[3]++;
}
break;
case '工学院':
if(new_capacity[4] < capacity[4]){
if(questionnaire[i][3] == '生命理工学院'){
not_huhoni[i] = '本意'
}
else{
not_huhoni[i] = '不本意'
}
new_questionnaire.push(questionnaire[i]);
new_capacity[4]++;
}
break;
case '情報理工学院':
if(new_capacity[5] < capacity[5]){
if(questionnaire[i][3] == '生命理工学院'){
not_huhoni[i] = '本意'
}
else{
not_huhoni[i] = '不本意'
}
new_questionnaire.push(questionnaire[i]);
new_capacity[5]++;
}
break;
}
if(new_capacity == capacity){
break;
}
}
console.log(new_capacity);
console.log(new_questionnaire.length);
for(i = 0; i < new_n; i++){
new_questionnaire[i].push(new_questionnaire[i][5] + new_questionnaire[i][6] + new_questionnaire[i][7] + new_questionnaire[i][8]);
}
for(i = 0 ; i < new_n ; i++){
switch(questionnaire[i][2]){
case '生命理工学院':
break;
case '環境社会理工学院':
if(questionnaire[i][3] == '工学院' || questionnaire[i][3] || '理学院' && questionnaire[i][3] || '情報理工学院'){
questionnaire[i][3] = questionnaire[i][4];
}
break;
case '物質理工学院':
questionnaire[i][3] = '生命理工学院';
break;
case '理学院':
if(questionnaire[i][3] == '工学院' || questionnaire[i][3] || '理学院' && questionnaire[i][3] || '情報理工学院'){
questionnaire[i][3] = questionnaire[i][4];
}
break;
case '工学院':
if(Math.floor(Math.random()*3) == 0){
questionnaire[i][3] = questionnaire[i][4];
}
break;
case '情報理工学院':
if(Math.floor(Math.random()*4) == 0 && new_questionnaire[i][10] < 460){
questionnaire[i][2] = questionnaire[i][3];
questionnaire[i][3] = questionnaire[i][4];
}
break;
}
}
//合計点順にソート
new_questionnaire.sort((a, b) => {return b[10] - a[10];} );
//第三志望を無くしてシミュレーション
for(i = 0; i < new_n; i++){
//第一志望に行けるか判定
switch(new_questionnaire[i][2]){
case '生命理工学院':
if(new_new_capacity[0] < capacity[0]){
new_questionnaire[i].push('生命理工学院')
new_new_capacity[0]++;
if(new_new_capacity[0] == capacity[0]){
lowest_scores[0] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[0]){
new_questionnaire[i].push('生命理工学院')
new_new_capacity[0]++;
}
else{
new_questionnaire[i].push('第一志望落ち')
}
break;
case '環境社会理工学院':
if(new_new_capacity[1] < capacity[1]){
new_questionnaire[i].push('環境社会理工学院')
new_new_capacity[1]++;
if(new_new_capacity[1] == capacity[1]){
lowest_scores[1] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[1]){
new_questionnaire[i].push('環境社会理工学院')
new_new_capacity[1]++;
}
else{
new_questionnaire[i].push('第一志望落ち')
}
break;
case '物質理工学院':
if(new_new_capacity[2] < capacity[2]){
new_questionnaire[i].push('物質理工学院')
new_new_capacity[2]++;
if(new_new_capacity[2] == capacity[2]){
lowest_scores[2] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[2]){
new_questionnaire[i].push('物質理工学院')
new_new_capacity[2]++;
}
else{
new_questionnaire[i].push('第一志望落ち')
}
break;
case '理学院':
if(new_new_capacity[3] < capacity[3]){
new_questionnaire[i].push('理学院')
new_new_capacity[3]++;
if(new_new_capacity[3] == capacity[3]){
lowest_scores[3] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[3]){
new_questionnaire[i].push('理学院')
new_new_capacity[3]++;
}
else{
new_questionnaire[i].push('第一志望落ち')
}
break;
case '工学院':
if(new_new_capacity[4] < capacity[4]){
new_questionnaire[i].push('工学院')
new_new_capacity[4]++;
if(new_new_capacity[4] == capacity[4]){
lowest_scores[4] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[4]){
new_questionnaire[i].push('工学院')
new_new_capacity[4]++;
}
else{
new_questionnaire[i].push('第一志望落ち')
}
break;
case '情報理工学院':
if(new_new_capacity[5] < capacity[5]){
new_questionnaire[i].push('情報理工学院')
new_new_capacity[5]++;
if(new_new_capacity[5] == capacity[5]){
lowest_scores[5] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[5]){
new_questionnaire[i].push('情報理工学院')
new_new_capacity[5]++;
}
else{
new_questionnaire[i].push('第一志望落ち')
}
break;
}
//第二志望判定
if(new_questionnaire[i][11] == '第一志望落ち'){
switch(new_questionnaire[i][3]){
case '生命理工学院':
if(new_new_capacity[0] < capacity[0]){
new_questionnaire[i].push('生命理工学院')
new_new_capacity[0]++;
if(new_new_capacity[0] == capacity[0]){
lowest_scores[0] = new_questionnaire[i][10]
}
if(not_huhoni[i] == '不本意'){
huhoni++;
}
}
else if(new_questionnaire[i][10] == lowest_scores[0]){
new_questionnaire[i].push('生命理工学院')
new_new_capacity[0]++;
if(not_huhoni[i] == '不本意'){
huhoni++;
}
}
else{
new_questionnaire[i].push('第二志望落ち')
new_new_capacity[6]++;
}
break;
case '環境社会理工学院':
if(new_new_capacity[1] < capacity[1]){
new_questionnaire[i].push('環境社会理工学院')
new_new_capacity[1]++;
if(new_new_capacity[1] == capacity[1]){
lowest_scores[1] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[1]){
new_questionnaire[i].push('環境社会理工学院')
new_new_capacity[1]++;
}
else{
new_questionnaire[i].push('第二志望落ち')
new_new_capacity[6]++;
}
break;
case '物質理工学院':
if(new_new_capacity[2] < capacity[2]){
new_questionnaire[i].push('物質理工学院')
new_new_capacity[2]++;
if(new_new_capacity[2] == capacity[2]){
lowest_scores[2] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[2]){
new_questionnaire[i].push('物質理工学院')
new_new_capacity[2]++;
}
else{
new_questionnaire[i].push('第二志望落ち')
new_new_capacity[6]++;
}
break;
case '理学院':
if(new_new_capacity[3] < capacity[3]){
new_questionnaire[i].push('理学院')
new_new_capacity[3]++;
if(new_new_capacity[3] == capacity[3]){
lowest_scores[3] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[3]){
new_questionnaire[i].push('理学院')
new_new_capacity[3]++;
}
else{
new_questionnaire[i].push('第二志望落ち')
new_new_capacity[6]++;
}
break;
case '工学院':
if(new_new_capacity[4] < capacity[4]){
new_questionnaire[i].push('工学院')
new_new_capacity[4]++;
if(new_new_capacity[4] == capacity[4]){
lowest_scores[4] = new_questionnaire[i][10]
}
}
else if(new_questionnaire[i][10] == lowest_scores[4]){
new_questionnaire[i].push('工学院')
new_new_capacity[4]++;
}
else{
new_questionnaire[i].push('第二志望落ち')
new_new_capacity[6]++;
}
break;
case '情報理工学院':
new_questionnaire[i].push('第二志望落ち')
new_new_capacity[6]++;
break;
}
}
else{
new_questionnaire[i].push('第一志望合格')
}
}
console.log(lowest_scores);
console.log(new_new_capacity);
result.push(lowest_scores[0])
result.push(lowest_scores[1])
result.push(lowest_scores[2])
result.push(lowest_scores[3])
result.push(lowest_scores[4])
result.push(lowest_scores[5])
result.push(new_new_capacity[0])
result.push(new_new_capacity[1])
result.push(new_new_capacity[2])
result.push(new_new_capacity[3])
result.push(new_new_capacity[4])
result.push(new_new_capacity[5])
result.push(new_new_capacity[6])
result.push(huhoni)
output.appendRow(result);
}
//志望が第何か関数
function huhoni_test(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('フォームの回答 1');
const output = ss.getSheetByName('出力');
const n = sheet.getLastRow() - 1;
let questionnaire = sheet.getRange(2, 2, n, 10).getValues();
let capacity = [0, 0, 0, 0, 0, 0, 0];
let choice = [[0, 0, 0, 0, 0, 0,], [0, 0, 0, 0, 0, 0,], [0, 0, 0, 0, 0, 0,]]
//各学院の人数の数え上げ、名無しを風吹けば名無しにする、合計点を追加
for(i = 0 ; i < n ; i++){
switch(questionnaire[i][1]){
case '東工落ちた':
capacity[0]++;
break;
case '生命理工学院':
capacity[1]++;
break;
case '環境社会理工学院':
capacity[2]++;
break;
case '物質理工学院':
capacity[3]++;
break;
case '理学院':
capacity[4]++;
break;
case '工学院':
capacity[5]++;
break;
case '情報理工学院':
capacity[6]++;
break;
}
if(questionnaire[i][0] == ''){
questionnaire[i][0] = '風吹けば名無し';
}
questionnaire[i].push(questionnaire[i][5] + questionnaire[i][6] + questionnaire[i][7] + questionnaire[i][8]);
}
for(i = 0; i < n; i++){
switch(questionnaire[i][1]){
case '東工落ちた':
break;
case '生命理工学院':
if(questionnaire[i][2] == '生命理工学院'){
choice[0][0] ++;
}
else if(questionnaire[i][3] == '生命理工学院'){
choice[1][0] ++;
}
else{
choice[2][0] ++;
console.log(questionnaire[i]);
}
break;
case '環境社会理工学院':
if(questionnaire[i][2] == '環境社会理工学院'){
choice[0][1] ++;
}
else if(questionnaire[i][3] == '環境社会理工学院'){
choice[1][1] ++;
}
else{
choice[2][1] ++;
}
break;
case '物質理工学院':
if(questionnaire[i][2] == '物質理工学院'){
choice[0][2] ++;
}
else if(questionnaire[i][3] == '物質理工学院'){
choice[1][2] ++;
}
else{
choice[2][2] ++;
}
break;
case '理学院':
if(questionnaire[i][2] == '理学院'){
choice[0][3] ++;
}
else if(questionnaire[i][3] == '理学院'){
choice[1][3] ++;
}
else{
choice[2][3] ++;
}
break;
case '工学院':
if(questionnaire[i][2] == '工学院'){
choice[0][4] ++;
}
else if(questionnaire[i][3] == '工学院'){
choice[1][4] ++;
}
else{
choice[2][4] ++;
}
break;
case '情報理工学院':
if(questionnaire[i][2] == '情報理工学院'){
choice[0][5] ++;
}
else if(questionnaire[i][3] == '情報理工学院'){
choice[1][5] ++;
}
else{
choice[2][5] ++;
}
break;
}
}
console.log(choice);
}
//ツイッタラーは優れているのか
function twitterer() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('フォームの回答 1');
const output = ss.getSheetByName('出力');
const n = sheet.getLastRow() - 1;
let questionnaire = sheet.getRange(2, 2, n, 10).getValues();
let capacity = [0, 0, 0, 0, 0, 0, 0];
let new_capacity = [0, 0, 0, 0, 0, 0];
let lowest_scores = [0, 0, 0, 0, 0, 0];
output.clear();
//ツイッタラー以外を消す
for(i = 0; i < n; i++){
if(questionnaire[i][0] != ''){
output.appendRow(questionnaire[i]);
}
}
}
編集後記
たかが情理リテでこんなにガチった奴他におらんやろ…
めっちゃ疲れたー
今のところ特に何も書くことは無いよ。
後で書くかも。
あ、twitterフォローよろしく!
この記事が気に入ったらサポートをしてみませんか?