コトダマン ニュワ子降臨

流れ

  • 最初の盤面は「○あ○あ○○ん」で中央にウォールがある。ターゲットは右側のヨウスイにする。1ターン、2ターン目でヒール、ウォール、ヨウスイ(右ザコ)を倒すのが理想。倒せなくてもペナルティは無い(多分)。
  • ヒール、ウォール、ヨウスイを倒すとニュワ子の弱点(4文字)が出現し、盤面が「○あ○○あ○あ」になる。
  • 全ターンを通して4文字1つのタイムボムがかかる。失敗するとダメージ(即死ではないが大きい)

ソロなら

  • ダセットが前半に出たら後半ターンに出せるようキープするといい

ワード

  • 「○あ○あ」はこれまでに無かったお題だがワードは多い
    • かあかあ
    • かあたあ(カーター)
    • さあばあ
    • ばあたあ(バータ、バーター)
    • ばあなあ
    • ばあばあ(バーバー、ばあ)
    • はあはあ(はあはあ、はあ)
    • まあかあ
    • まありあ(マーリア、アリア)
    • マーダー、ドアドアは無いので注意
  • 「あ○○ん」は「あんたん」「あんかん」「あんざん」「あんあん」「あきかん」「あきびん」など

  • 後半は4文字4文字を作ろうとすると、重ねる必要がある。「あんかあ+かあたあ」「あんばあ+ばあばあ」など。「あんだあばあ」の6文字もある

Linuxメモ

USBブートとISOイメージブートは何が違うのか

  • USBブートでは、USBメモリはハードディスク相当の内容が書かれており、MBR を使ってブートする。
  • ISOイメージには MBRは無く、ISOイメージのシステム領域に書き込んだブートローダをロード、実行してブートする。

boot - what is the difference between the usb booting mechanism and optical disk booting mechanism? - Super User

ISOイメージのフォーマット

  • ISOイメージにはシステム領域がある。ここは ISO9660 では未使用領域であり、El torito 仕様ではここにブートローダを置く。

ISO 9660 - Wikipedia

  • ブートローダには、"ISOLINUX" が Linux ではよく使われるが、他にもいくつか存在する。

第5章 既製のブートローダー

互換性

  • このため、USBメモリイメージと ISOイメージは、MBRブートローダのあたりが異なっている。ISOイメージを dd でUSBメモリに書き込んでも(普通は)ブートできない。
  • RuFus というツールは、MBR を付与してISOイメージファイルからブート可能な USBメモリを作るツールである。

Linuxをインストールできる「ライブUSBメモリ」をWindowsで作成する方法【スクリーンショットつき解説】 | LFI

  • USBブート可能なISOイメージを作る isohybrid という方法もある。これはISOイメージに疑似的なMBRを含め、そのMBRが "ISOLINUX"を読み出すことで、ブートを行う。

第93回 xorrisoとUEFIブート再び[その3]:玩式草子─ソフトウェアとたわむれる日々|gihyo.jp … 技術評論社

コトダマン 鬼舞辻無惨(魔級)

turn 1

  • ◎くせ〇〇ん〇(◎はコピー)
  • 他、○いせ○、○くて○
  • 一番左のコピーマスに「火」炭治郎を出す
  • ん円(スーパーヒールブレイカー)を4文字目に出せれば効率的
  • 「かいせんき」「かいせんきん」を(うまく)作ると1ターンでヒールボムを壊すことができる。
  • 1ターンでヒールを壊すと2ターン目がコピー無しになる。(そのときの盤面には2ターン目のものと3ターン目のもののときがある)

turn 2

  • 〇いせ〇◎ん〇
  • 水スゴワザボムを忘れないこと
  • コピーマスにはシンシャクを出す。次のターンに備えて不死川は使わない
  • このターンでヒールボムを両方壊すのが理想

turn 3

  • ◎〇ん〇いてん
  • 5文字タイムボム
  • 不死川の「じ」を使い、「じさんかい」を作る。
  • それが無理な場合は「じんさいてん」(「て」のとき)
  • 「さんかいてん」は無いので注意
  • うまくいけばこのターンで終わる
  • このターンのコンボが減ってしまうが、末尾に「ンカーポ」の「ん」を出さずに次のターンに回す方が確実かもしれない。

turn 4

  • ◎○◎しょう○
  • 5文字タイムボム
  • 「かしょうき」を作る。(1ターン目に出した「か」が戻ってくるとき)。他「かんしょうき」「かかんしょう」「さんかしょう」など

メモ

  • 火水木にチェンジできるキャラはチェンジして出す(「しのぶ」「カナヲ」)
  • シンシャクは2ターン目、不死川は3ターン目に出すので、それ以前に出たらキープする。
  • 3ターン目までに「じ」「さ」「か」を手元に用意しておく
  • 1ターン目で「ん円」が出せず前側のヒールがあまり削れなかったときは2ターン目の先頭をヒールブレイカにするといい
  • 2ターンでヒールを壊せないと3ターン目は木スゴワザのタイムボムになる。ここまで来るとパターンが崩れてしまう。
  • かくてき、かくてん、てきしん、とくせき、せきしん、はある

Linuxメモ

date

  • date -d '@0' で epoch時刻を表示し、date -s '@0' で epoch時刻 を設定する、はずだが dateコマンドはエラーを返す。
  • しかしなぜか epoch +数時間後であれば設定できる。
[root@centos8-localdomain work]# export TZ=UTC
[root@centos8-localdomain work]# date -d '@0'
Thu Jan  1 00:00:00 UTC 1970
[root@centos8-localdomain work]# date -s '@0'
date: cannot set date: Invalid argument
Thu Jan  1 00:00:00 UTC 1970
[root@centos8-localdomain work]# date -d '@32400'
Thu Jan  1 09:00:00 UTC 1970
[root@centos8-localdomain work]# date -s '@32400'
date: cannot set date: Invalid argument
Thu Jan  1 09:00:00 UTC 1970
[root@centos8-localdomain work]# date -s '@42400'
date: cannot set date: Invalid argument
Thu Jan  1 11:46:40 UTC 1970
[root@centos8-localdomain work]# date -s '@52400'
date: cannot set date: Invalid argument
Thu Jan  1 14:33:20 UTC 1970
[root@centos8-localdomain work]# date -s '@62400'
date: cannot set date: Invalid argument
Thu Jan  1 17:20:00 UTC 1970
[root@centos8-localdomain work]# date -s '@72400'
date: cannot set date: Invalid argument
Thu Jan  1 20:06:40 UTC 1970
[root@centos8-localdomain work]# date -s '@82400'
Thu Jan  1 22:53:20 UTC 1970
[root@centos8-localdomain work]# date
Thu Mar 18 14:31:06 UTC 2021
[root@centos8-localdomain work]# date -s '@82400'
Thu Jan  1 22:53:20 UTC 1970
[root@centos8-localdomain work]# date
Thu Jan  1 22:53:24 UTC 1970
settimeofday({tv_sec=0, tv_usec=0}, NULL) = -1 EINVAL (Invalid argument)

参考になるかもしれない Why cannot I set the date of my GNU/Linux machines to the Epoch? - Unix & Linux Stack Exchange https://unix.stackexchange.com/questions/533393/why-cannot-i-set-the-date-of-my-gnu-linux-machines-to-the-epoch

pidstat

  • pidstatはプロセスIDごとにCPU使用率を表示する。
  • CPU列に表示するCPUは最後に実行したプロセッサ番号である。

https://github.com/sysstat/sysstat/blob/master/pidstat.c#L452

 rc = sscanf(start,
            "%*s %*d %*d %*d %*d %*d %*u %llu %llu"
            " %llu %llu %llu %llu %lld %lld %*d %*d %u %*u %*d %llu %llu"
            " %*u %*u %*u %*u %*u %*u %*u %*u %*u %*u %*u %*u %*u"
            " %*u %u %u %u %llu %llu %lld\n",
            &pst->minflt, &pst->cminflt, &pst->majflt, &pst->cmajflt,
            &pst->utime,  &pst->stime, &pst->cutime, &pst->cstime,
            thread_nr, &pst->vsz, &pst->rss, &pst->processor,
            &pst->priority, &pst->policy,
            &pst->blkio_swapin_delays, &pst->gtime, &pst->cgtime);

https://github.com/torvalds/linux/blob/master/fs/proc/array.c

 seq_put_decimal_ll(m, " ", task_cpu(task));

コトダマン ヤマトタケル廻

  • 友情コンボが重要。「ガブリエル」「マナ」「ノストラダムス」は一緒に使う
  • このリーダーは毒耐性がない。毒は一体あたり5000ダメージ。優先して処分する。

追記(2021/7)

  • スタート時、まず右ザコの「ちくわ丸」を攻撃する。2ターン以内に倒さないと即死級ダメージを受ける。(左の「ふっふー」は3ターンなので、次はふっふー)。ターゲットを「ちくわ丸」にし火属性で攻撃する(マナ+友情コンボが出せるといい)
  • ザコを両方倒すとボスに4文字弱点がつく(2ターン)
  • そのあとザコが復活するが、ボスを倒すとザコ2人は力抜けて倒れる。ボスのHPが少なければボス優先でいい
  • ノストラダムスは9コンボでスゴワザなので、友情コンボになるなら4文字じゃなくても出していい

メモ

  • さいたいさい
  • あかまい(赤米)
  • たてまい(建て米)
  • たませい(玉清)
  • かまいて(構い手)

デッキ改善版

  • アーサーリーダーなので英種族は火力が高い。友情コンボであれば属性が弱点じゃなくても火力でなんとかなる。
  • ただ英種族以外のキャラは睡眠も毒が軽減されないのでほぼ掛かってしまう。特に睡眠は攻撃しなくなるので問題が大きい。自然回復のターン数も長い。できるだけすぐに捨てる。
  • リーダーのアーサーは(出してもビリビリダメをうけるだけなので)使わない

コトダマン クシナダ廻

デッキ

盤面

  • ザコがいる間は、(1) (2) (4) (1) (2) (4) と繰り返す
  • ザコを倒すと (3) が1ターン入る。

このデッキの典型手順

(1)

  • まずターゲットを右ザコ(木属性のザコ)に置く
  • 右ザコは「斎藤一」か「エクスカリバー」どちらかのスゴワザなら倒せる。斎藤は先頭がスゴワザ条件なので注意。

(2)

  • 左ザコを倒す
  • 左側のコピーマスに非コピーガードキャラを置いて「う」にする。または先に左から5文字目に「ん」「い」を置いて「う」「ん」「い」を狙う(「の」が出なそうなとき)
  • ザコは水属性だが「ノア」か「南斗五車星」で倒せる。「のうりん」「のうさん」「ふうさん」などが作れる。

(3)

  • チャンスターン
  • 1文字目はスーパー弱体ガードのエクスカリバーを置き、次にノンノの「ん」を出すとよい。(末尾の図参照)

(4)

  • 両ザコが復活するので再び右側のザコ(木ザコ)から倒す
  • このターンの前に大ダメージを受けるのでトキの鏡を右側のコピーマスに置いて「せいいん」を作る
  • 次は (1)の盤面となる。つまり、2周目は盤面がずれて (1)の盤面で水ザコになる。

その他

  • 1ターン目で斎藤一と「かんさいふ」(ふは南斗)を作るとザコを両方倒せる

  • ザコ倒したあとエクスカリバーとノアを両方出すと、敵のHPを80~90%ぐらい削れる。

コトダマン モサイクロプス(VD)超級

概要

  • 毎ターン5文字2個のタイムボム。クリアするとこちらのHPが(8000ぐらい)回復し、失敗すると敵のHPが(25000ぐらい)回復する
  • HPが70%(?)を切ると弱点(5文字)が出る

メモ

  • 奇数ターンは「〇う〇ゅ〇〇う」のようなパターン
  • 偶数ターンは「〇うしゅ〇〇〇」のようなパターン
  • それぞれ必要な「う」文字「お」列文字の数が異なる。このため運が悪いと5文字2つが出来ないことがある(特に野良だと)。でもよほどまで負けることはない。
  • このデッキの碇シンジは偶数ターンの「う」不足対策で「めい」を作るために入れている(加えて「し」の予備)

単語

  • 「う」が足りない場合でも「うしょうふ」が出来ることがある
  • 「こうしょうふう」で7文字

コトダマン クロロ降臨

デッキ

プレイのポイント

  • 適正コラボキャラがいないためか、難易度がかなり高い
  • 最初は「〇〇かい〇〇き」のような盤面で始まり、3ターンで4文字以上を9つ作るタイムボムがある(失敗すると即死)
    • 盤面から4文字を2ワード作るのは容易だが、それだけでは3ターン後に死んでしまう。そのため例えば「かいけいき」で「かいけい」と「かいけいき」を作ったり、「かいこうき」で「かいこう」と「いこうき」と「かいこうき」を作るなど文字を増やすことが必要。
  • さらに開始時点でヒールブロックが2つあり、攻撃開始前に1つあたり17万HP回復されてしまう。ヒールブロックを壊すと、敵に弱点(単位・通貨)が出現する。また「〇〇ちょう〇〇」のような4文字以上を作りやすい盤面が来る(但し一週目のみ)。このためヒールブロック破壊も優先事項となる。
  • レイザー
    • レイザーは弱体マスに入れると火力が上がるスーパー弱体ガードを持っている。「れい」は単位・通貨も突けるのでこのデッキでは一番の火力を出せる
  • 2ラウンド目
    • ターン5にはヒールとタイムボムが復活する。この第2ラウンドのヒール破壊後およびターン7には「〇いか〇〇い〇」という盤面が来る。ここでワードを多数作るのは難しい。

盤面ごとの攻略メモ

〇〇かい〇〇き

  • かいけいき(かいけい、かいけいき)
  • かいとうき(かいとう、かいとうき、いとうき)今のデッキでは不可
  • かいこうき(かいこう、かいこうき、いこうき)今のデッキでは不可

  • けいかいさんき(けいかい、けいかいさ、かいさん、かいさんき)

〇〇かい〇〇し

  • かいけいし(かいけい、かいけいし)
  • カイシンシ(かいしん、かいしんし)
  • けいかいしん
  • いしいし

〇〇こう〇〇き

  • こうけいき
  • いこうけい (意向形)
  • しんこうけい
  • ふうこうけい
  • れいこうせい (齢構成)

〇〇そう〇〇き

  • そうふうき
  • そうしんき
  • そうせいき
  • いいそう(一索)
  • けんそう
  • けんそうさ

〇〇ちょう〇〇

  • 「ちょうけ」は無いので注意
  • けいちょういん
  • せいちょうさ (静聴さ)

〇〇しょう〇〇

  • けいしょうさい (けいしょ、けいしょう、けいしょうさ、いしょう、しょうさ、しょうさい)

〇いか〇〇い〇

  • かいけいし
  • かいけいき
  • けいかいさいび (けいかい、けいかいさ、かいさい、かいさいび)

ネフェルピトー降臨 魔級

デッキ

ゴンを使えば6文字出せなくてもクリア可能。 ただ6文字を狙いやすい盤面なので、基本的には6文字を狙う。

wave1

  • wave2で「さいたんさい」を出せるよう準備する

wave2

盤面パターン例A

き〇い〇ん〇〇

  • さいたんさい (ダセットを出せると 99.9999)
  • さいしんさく
  • たいいんしん

盤面パターン例B

かん〇ん〇〇〇

盤面パターン例C

〇い〇ん〇〇い

盤面パターン例D

〇い〇ん〇ん〇

  • たいいんしん
  • たいかんきん

盤面パターン例E

〇しん〇い〇〇

*しんさいこん(震災婚)

盤面パターン例F

〇ん〇ん〇〇ん

Rubyのrequire

疑問

ruby では require でライブラリを読む。 (ファイルは .rb (rubyファイル)でも .so 等でもよいようだ)

参照するパスは $: (or $LOAD_PATH) が使われる。

gem でインストールすると ~/.gem/ にインストールされる。 gem install rufo で rufo をインストールしたあとパスを確認すると以下の通り。

$ gem which rufo
/home/XXXX/.gem/ruby/2.6.0/gems/rufo-0.12.0/lib/rufo.rb

この状態で require "rufo" をするとエラーが出ないから、ライブラリ読み込みは成功している。しかし、 $: に ~/.gem は入ってない。なぜ require できるのか。

$ ruby -e 'require "rufo"'
$ ruby -e 'puts $:'
/usr/share/gems/gems/did_you_mean-1.2.2/lib
/usr/local/share/ruby/site_ruby
/usr/local/lib/ruby/site_ruby/2.6
/usr/share/ruby/vendor_ruby
/usr/lib/ruby/vendor_ruby/2.6
/usr/share/rubygems
/usr/share/ruby/2.6
/usr/lib/ruby/2.6

答え

rubygem が require を書き換えているらしい。

https://medium.com/@connorstack/understanding-ruby-load-require-gems-bundler-and-rails-autoloading-from-the-bottom-up-3b422902ca0

確かに require した後に $: を見ると ~/.gem が追加されている。

$ ruby -e 'require "rufo"; puts $:'
/usr/share/gems/gems/did_you_mean-1.2.2/lib
/home/XXX/.gem/ruby/2.6.0/gems/rufo-0.12.0/lib
/usr/local/share/ruby/site_ruby
/usr/local/lib/ruby/site_ruby/2.6
/usr/share/ruby/vendor_ruby
/usr/lib/ruby/vendor_ruby/2.6
/usr/share/rubygems
/usr/share/ruby/2.6
/usr/lib/ruby/2.6

名探偵コナン 呪われた航路(GBC)

キャラ

f:id:nodocchi:20210109214129j:plain

マップ

f:id:nodocchi:20210109214145j:plain

プレイのポイント

探索パートでは会話し、情報を集める。情報を集めたあと、メニューのキーワードで推理する。推理することでストーリーが進む。

グラフィック

ゲームボーイカラーを生かして配色がきれい。特に船や背景などの無機物はイベント絵もマップチップも光と影が絶妙で美しく仕上がっている。

Rubyメモ

max_by

maxは配列の最大値を返す。maxの引数で数値を指定して上位複数を返すこともできる。
a=[3,1,4,1,5,9]
a.max
=> 9
a.max(3)
=> [9, 5, 4]


maxはブロックで比較方法を指定できる。ブロックは、-1,0,1を返す必要がある。
a=%w(lemon apple pineapple orange)
=> ["lemon", "apple", "pineapple", "orange"]

a.max{|i,j|i.size <=> j.size}
=> "pineapple"
 a.max(2){|i,j|i.size <=> j.size}
=> ["pineapple", "orange"]


may_byは <=> で比較できる数値を返せばよい。
a.max_by{|i| i.size}
=> "pineapple"
a.max_by(2){|i| i.size}
=> ["pineapple", "orange"]

例えば、配列の特定の値が最大の要素を取り出すようなことが容易にできる。

> a=[["md", 1988], ["sfc", 1990], ["fc", 1986], ["pce",1988]]
a.max_by{|w|w.last}
=> ["sfc", 1990]

sort, sort_by も同様

Rubyメモ

Arrayで使えるメソッド

------------------------------------------------------------
# push n
配列の末尾に n を追加する(破壊的)

a=[1,2,3]
a.push(4,5)
a
=> [1, 2, 3, 4, 5]

------------------------------------------------------------
# pop
# pop(n)
配列から1つ取り除いて返す
または nで指定した数だけ配列から取り除き、その要素を配列で返す

返り値と残った値を使って、配列を分割するのにも使える

a = [1, 2, 3, 4, 5]
a.pop(3)
=> [3, 4, 5]
a
=> [1, 2]

------------------------------------------------------------
# shift
配列の先頭から要素を捨てて、配列を返す。

a=[1,2,3,4,5]
a.shift(3)
=> [1, 2, 3]
a
=> [4, 5]
------------------------------------------------------------
# unshift
配列の先頭に要素を追加する

a=[1,2,3,4,5]
a.unshift 6
=> [6, 1, 2, 3, 4, 5]


------------------------------------------------------------
# drop(n)
先頭のn要素を捨てた配列を返す
配列は書き換えない

a = [1,2,3,4,5]
a.drop(2)           #=> [3,4,5]

------------------------------------------------------------
# drop_while{|e| ....}
最初に偽になった要素までを捨てる
(最初に偽になった要素以降を取り出す)

a = [1,2,3,4,5]
a.drop_while{|i|i%3!=0}
=> [3, 4, 5]

see also take_while
------------------------------------------------------------
# each {|i| ... }

配列の要素に対し繰り返す

------------------------------------------------------------
# each_index {|i| ... }

配列のindexに対して繰り返す
for(i=0; i<N; i++) a[i]... 的な使い方ができる。

a=[3,1,4,1,5,9]
a.each_index.map{|i| "#{i}:#{a[i]},"}
=> ["0:3,", "1:1,", "2:4,", "3:1,", "4:5,", "5:9,"]

メモ:
a.map.with_index{|v,i| "#{i}:#{v},"}
=> ["0:3,", "1:1,", "2:4,", "3:1,", "4:5,", "5:9,"]
------------------------------------------------------------
# count(n)

nに一致する要素の数を返す

# count{|e| ... }

ブロックが真になった要素の数を返す

a = [3, 1, 4, 1, 5, 9]
a.count{|i| i%3 == 0}
=> 2

------------------------------------------------------------
# delete

配列から一致する要素を削除する

a = [3, 1, 4, 1, 5, 9]
a.delete(1)
a
=> [3, 4, 5, 9]

------------------------------------------------------------
# delete_at(n)

位置 n の要素を削除する

a=[3,1,4,1,5,9]
a.delete_at(-1)
a
=> [3, 1, 4, 1, 5]
------------------------------------------------------------
# delete_if{|i| ...}

条件に一致する要素を削除する

------------------------------------------------------------
# fill(val)

すべての要素を val にする

# fill(val, start, length)
# fill(val, range)

指定した範囲を val にする

a=[3,1,4,1,5,9]
a.fill(-1, 3..nil)
=> [3, 1, 4, -1, -1, -1]

------------------------------------------------------------

# filter{i| ... }
# select{|i|... }

各要素に対しブロックを評価し、真だった要素の配列を返す

------------------------------------------------------------

# index(n)
# find_index(n)
# index{|i| ... }
# find_index{|i| ... }

n に一致するまたは、ブロックが真を返す最初の位置を返す

a=[3,1,4,1,5,9]
a.index(1)
=> 1
a.index{|v|v>3}
=> 2


# rindex(n)
# rindex{|i) ...}

nに一致する最後の要素の位置を返す

a=[3,1,4,1,5,9]
a.rindex(1)
=> 3


------------------------------------------------------------
# first

配列の先頭の要素を返す。
Lisp でいえば car
(cdr は drop(1))

first(n) として複数要素を返すことができる

------------------------------------------------------------

# flatten 

配列を平たん化する

a="this is a pen".split.map(&:chars)
=> [["t", "h", "i", "s"], ["i", "s"], ["a"], ["p", "e", "n"]]
a.flatten
=> ["t", "h", "i", "s", "i", "s", "a", "p", "e", "n"]

------------------------------------------------------------

# include?(n)

配列が要素nを含むとき true, そうでないとき false を返す

------------------------------------------------------------

# insert(n, *val)

位置n の直前に val を追加する

a=[3,1,4,1,5,9]
a.insert(2, 11,12,13)
=> [3, 1, 11, 12, 13, 4, 1, 5, 9]

------------------------------------------------------------
# last
# last(n)

配列の最後の要素を返す

------------------------------------------------------------

# all? {|e| ... }

すべての要素が真のとき、真を返す

# any? {|e| ... }

1個以上の要素が真のとき、真を返す

# one? {|e| ... }

1個の要素が真のとき、真を返す

"XXXXOXXXX".chars.one?{|v|v=="O"}
=> true
"XXXXOXXXO".chars.one?{|v|v=="O"}
=> false


------------------------------------------------------------

# permutation(n)

順列を返す

a=[?a, ?b, ?c]
=> ["a", "b", "c"]
a.permutation(2).to_a
=> [["a", "b"], ["a", "c"], ["b", "a"], ["b", "c"], ["c", "a"], ["c", "b"]]

------------------------------------------------------------

# combination(n)

組み合わせを返す

a=[?a, ?b, ?c]
=> ["a", "b", "c"]
a.combination(2).to_a
=> [["a", "b"], ["a", "c"], ["b", "c"]]

------------------------------------------------------------

# rotate

指定した位置(省略時は1)の要素が先頭になる配列を生成し返す。

a
=> [3, 1, 4, 1, 5, 9]
a.rotate
=> [1, 4, 1, 5, 9, 3]
a
=> [3, 1, 4, 1, 5, 9]
a.rotate(-1)
=> [9, 3, 1, 4, 1, 5]

------------------------------------------------------------

# sample 

配列からランダムに1つ(引数を指定すれば複数)選んで返す

a=(1..6).to_a
a.sample
=> 4
a.sample
=> 2

------------------------------------------------------------

# slice(n)
# slice(n, length)
# slice(range)

Array#[] と同じ。
配列から指定した範囲の部分配列を返す

------------------------------------------------------------

# sort

ソートする。要素は <=> で比較する。

# sort_by

要素をそのまま <=> で比較するのではなくブロックの出力で比較する

"pencil".chars.sort_by{|c|c.ord}
=> ["c", "e", "i", "l", "n", "p"]

------------------------------------------------------------

# sum
# sum{|e| ... }

"abc".chars.sum{|c|c.ord}
=> 294
97+98+99
=> 294

------------------------------------------------------------

# take(n)

配列の先頭n要素を返す
n は省略できない。
n が2以上なら firstと同じ

------------------------------------------------------------

# take_while{|e| ... }

要素が偽になるまでの要素を配列で返す。
(先頭から数えて要素が真である範囲を返す)

a=[1,2,3,4,5,6]
a.take_while{|n|n<4}
=> [1, 2, 3]
a.take_while{|n|n>3}
=> []

------------------------------------------------------------

# to_h

配列をハッシュにする

[[:foo, :bar], [1, 2]].to_h
=> {:foo=>:bar, 1=>2}

> %w(uma shika inu neko).each_with_index.to_h
=> {"uma"=>0, "shika"=>1, "inu"=>2, "neko"=>3}

ブロックを指定するとそのブロックが返した [key, value]でハッシュを作る

 %w(uma shika inu neko).to_h{|w| [w, w.size]}
=> {"uma"=>3, "shika"=>5, "inu"=>3, "neko"=>4}

------------------------------------------------------------
# zip

> [1,2,3].zip(["a", "b", "c"])
=> [[1, "a"], [2, "b"], [3, "c"]]

w=%w(uma shika inu kaba)
=> ["uma", "shika", "inu", "kaba"]
(0...w.size).zip(w)
=> [[0, "uma"], [1, "shika"], [2, "inu"], [3, "kaba"]]


------------------------------------------------------------

# join
# *

%w(uma shika inu kaba).join("//")
=> "uma//shika//inu//kaba"

%w(uma shika inu kaba)*"//"
=> "uma//shika//inu//kaba"


------------------------------------------------------------
# |

和演算

[1, 1, 4, 2, 3] | [5, 4, 5]
#=> [1, 4, 2, 3, 5]


------------------------------------------------------------

# &

積演算

[3,1,4,1,5,9] & [1,7,3,2,0,5.0,8]
=> [3, 1]

------------------------------------------------------------

# + 

連結

[1,2,3] + [2,3,4,5]
=> [1, 2, 3, 2, 3, 4, 5]


------------------------------------------------------------

# -

減算。
減算される側の配列中の、減算する配列に含まれる要素はすべて削除される。

[1,2,3]-[2,3,4,5]
=> [1]

[1,2,2,3,3]-[2,3,4,5]
=> [1]

WindowsUpdateのトラブル

updateまで

はっきりとは覚えてないが、今回、Windows Update をうながすダイアログに時間がかかるような記述があった気がする。実際、WindowsUpdateをすると、結構な時間(数十分?)待たされた。

44%ぐらいの時点で画面が表示されたが、それまでディスプレイは真っ暗となる。ディスクアクセスがたまに発生するものの、キーボードもマウスも反応しない。これは焦る。強制電源オフしちゃう人いるんじゃないかな…

update後

カラーモード

立ち上がったら、どうもおかしい。 まずタスクバーやシステムメニューの背景が白い。デスクトップ右メニューから、色の設定を「カスタマイズ」にして、「システム:黒、アプリ:白」にするとなんとなくもとの感じになった。なんか違う気がしないでもないが…

サウンド

またこれをやられた。
Windowsアップデートしたら音がこもるようになった - 日々のメモ@はてな

IME

文字入力がおかしい…と思ったら以前、変換キーをIME on/offにする設定をしたのが戻ってしまっている。またこれ↓をするのかと思ったら、

win10のimeで「変換」でIMEをon/offする - 日々のメモ@はてな

そもそもIME自体が変わってしまったみたい。 新しい方は詳細設定が無く、キーカスタマイズができない、なんだこれ。

「以前のIMEを使う」を選択すると、変換キーの設定も残っており、そのまま元通りになった。

ひどいアップデートだ。 他にもまだ気づいてないだけで、なんかやっていそう