My days of...

生活のことなど、がんばろう

キモカワ?アニマルキャンドルだって

可愛いアニマルキャンドルが紹介されていました。

irorio.jp

クリスマスなどのロマンチックなムード高まる時にこのかわいいキャンドルで、さらに楽しい雰囲気を作りだすのはどうでしょう?公式サイトはこちらかな・・・?

nooks.shop

Amazonでも売ってます。

 

PyroPet 54 Celsius 動物型 スケルトンキャンドル Dreki ブラック
 
PyroPet Candles, Kisa Cat Wax Candle, Melts to Metallic Skeleton (Black)

PyroPet Candles, Kisa Cat Wax Candle, Melts to Metallic Skeleton (Black)

 
グミベアCandle???香りつき???スケルトンキャンドル???レッド

グミベアCandle???香りつき???スケルトンキャンドル???レッド

 

 

Netflixでルシファー(シーズン1〜3)を観た

Netflixで配信中の「ルシファー」を見終わりました。全部で3シーズン。アメリFoxチャンネルで放送されていたものの、3シーズンで打切りになっていますが、Netflixでシーズン4(になるのかな?)が10話で2019年に放送予定されています。

シーズン3の25話、26話がちょっと変な感じになっており、実質シーズン3の最終話は24話なのでしょう。

ルシファー役トム・エリスの色気ととぼけた感じがいい感じのドラマでした。ピアノを引いたり、ダンスをしたり、歌を歌うのも良さげな感じ。それにクロエ役のローレン・ジャーマンとのあっているのか合わせないのかわからないやり取りも面白い。一番可愛くて面白く、大人な感じなのは、たまに出てくるトリクシーだけど・・・。

warnerbros.co.jp

年末年始の一気見などに向いているかも。

 

 

Forループを使わなくても同じ実行結果になるメソッドがある場合はそのほうがよいのかな

JavaScriptのメモ。

以前どこかのブログだか記事かで、JavaScriptはfor分のループは使わない方がいいとか、という内容がありました。それで代わりに使うのは、forEachやmapなどを利用するのがいいとか。whileも入る?とその時は考えていた気がします。

その中にevery()メソッドもあるのでしょうか。

問題として

配列 arr = ['Hello', 'hello'] があるとして、2番目の要素が1番目の要素に全て含まれるかどうかのテスト。大文字、小文字は問わない。
例えば ['Hello', 'hello']であれば2番目文字列が全て1番目の文字列に含まれるため、trueを返す。
['Hello', 'Hey']の場合、2番目の文字列内の'y'が1番目の文字列には含まれないので、falseを返す。
['Aline', 'line']の場合、2番目の文字列が全て1番目の文字列 'Aline' に含まれるため、trueを返す。

自分の回答はfor文を利用しました。

function mutation(arr) {
for (let i = 0; i < arr[1].length; i++) {
if (arr[0].toLowerCase().indexOf(arr[1][i].toLowerCase()) === -1) {
return false;
}
}
return true;
}

こんな感じ

模範回答の中にはevery()を利用して、

return arr[1].toLowerCase().split("").every(l => { return arr[0].toLowerCase().indexOf(l) != -1 }

 な感じのコードが。MDN Web docにも当然あったので、for文を利用しない書き方がたくさんあるな、と思った次第。

developer.mozilla.org

 

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

 

 

Netflixのデアデビルも終了に

どうするのかと思ったら・・・やっぱり

deadline.com

アイアンフィスト、ルークケイジに続いて、デアデビルもシーズン3で終了に。

Netflixで制作されたデアデビル(Deardevil)ですが、シーズン3で終了になるようです。面白かったのに、残念ですね。残りジェシカ・ジョーンズとパニッシャーですがこれらもどうなるのでしょう。

デアデビルの場合、シーズン3最後を観て、次のシーズンがあるとしたらどう始めるの?と思うような終了だったのと、アイアンフィスト、ルークケイジ終了のアナウンスとも合わさり、しょうがないかな、と。あの引きはどうなる?と思わせてコレっていうのも大人の事情でしょう。

 

 

PythonのListの値を渡す方法

PythonのListで初歩的なことですが・・・

>>> a = [1,2,3]

>>> b = a

>>> a[1] = 5

>>> b

[1, 5, 3]

 Pythonでは参照渡し(メモリのid参照だっけ?)になるので同じものに。

>>> a = [1,2,3]

>>> c = a[:]

>>> a[2] = 8

>>> c

[1, 2, 3] 

>>> b = a

>>> b

[1, 2, 8]

>>> b[1] = 5

>>> a

[1, 5, 8]

>>> b

[1, 5, 8]

>>> c

[1, 2, 3]

>>> c[1] = 0

>>> c

[1, 0, 3]

>>> a

[1, 5, 8]

>>> b

[1, 5, 8]

なんだか間違えそうになるのですが、Listの値をコピーするのは[:]を使えば大丈夫っぽいのかな。b = a だとメモリ先をコピーするから同じもの。c = a[:] だと値をコピー、と。単純な初歩的なことだから覚えておこう。PHPだとそのまま値コピーだから・・・。 

値渡しと参照渡しの違いを理解する

情報処理教科書 プロジェクトマネージャ 2019年版

情報処理教科書 プロジェクトマネージャ 2019年版

 

 

わからない時はGoogleやStackoverflowなどインターネットを活用して検索、質問すればどこかに答えが転がっている、そんな感じ

最近、leetcode.comアルゴリズムのeasyの問題を適当に解いてます。書籍「独学プログラマー」で紹介されていました。有料のプレミアム会員にならなくても、問題を解くだけなら会員になるだけ。Pythonの練習に、という感じ。英語のサイトなので、英語の内容を読み解く必要があります。

Next Permutation - LeetCode

この問題を解こうとしたのですが、

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

The replacement must be in-place and use only constant extra memory.

Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.

1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1

 まず "permutation" がわからず、また "lexicographically next greater permutation of numbers" もわからず・・・。意味的に順列だとかなんとか程度しかわからず。leetcodeのDiscussionは基本、解答しかない(どんだけシンプルかつ早い処理を書いたー!みたいな)ので、検索してみることに。permutationについてWikipediaの内容がいいよーとStackoverflowで紹介されていたのでその通りにすると解けました。

Wikipedia has a nice article on lexicographical order generation. It also describes an algorithm to generate the next permutation.

Quoting:

The following algorithm generates the next permutation lexicographically after a given permutation. It changes the given permutation in-place.

  1. Find the highest index i such that s[i] < s[i+1]. If no such index exists, the permutation is the last permutation.
  2. Find the highest index j > i such that s[j] > s[i]. Such a j must exist, since i+1 is such an index.
  3. Swap s[i] with s[j].
  4. Reverse the order of all of the elements after index i till the last element.

Permutation - Wikipedia

The following algorithm generates the next permutation lexicographically after a given permutation. It changes the given permutation in-place.

  1. Find the largest index k such that a[k] < a[k + 1]. If no such index exists, the permutation is the last permutation.
  2. Find the largest index l greater than k such that a[k] < a[l].
  3. Swap the value of a[k] with that of a[l].
  4. Reverse the sequence from a[k + 1] up to and including the final element a[n].

日本語の説明には上記の条件についてどこに書いてあるのかわかりませんでした。日本語または日本人にとっては常識、当たり前な知識というか条件なんでしょうね。

アルゴリズムというかプログラミングについては沢山書いて書き慣れるというか、考え方を練習して早く慣れるようにしていきたいですね。一つの問題を解くのに1時間〜2時間は当たり前みたいなのはちょっと・・・と。でも、楽しいです。

paiza.hatenablog.com

ちょうどPaizaの方がこのようなアルゴリズムについて学べる本の詳細をしてくださってました。

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

 
世界でもっとも強力な9のアルゴリズム

世界でもっとも強力な9のアルゴリズム

 

 

上記の条件を考えながら書いた処理は、

class Solution:
 def nextPermutation(self, nums):
  """
  :type nums: List[int]
  :rtype: void Do not return anything, modify nums in-place instead.
  """
  nums_len = len(nums)
  largest_index = 0
  for i in range(nums_len-1):
   if nums[i] < nums[i+1]:
    largest_index = i
   next_largest = 0
  for j in range(nums_len):
   if nums[j] > nums[largest_index]:
    next_largest = j
  if nums[largest_index] == nums[next_largest]:
   nums.sort()
  else:
   nums[largest_index], nums[next_largest] = nums[next_largest],  nums[largest_index]
   j = nums_len-1
   tmp_list = []
   while j > largest_index:
    tmp_list.append(nums[j])
    j -= 1
   n = 1
   for i in tmp_list:
    nums[largest_index + n] = i
    n += 1 

 

無料で読めるネットにあるPythonとJavaScript本

英語はできないよりできたほうがいい。少なくとも英文は読めないより読める(理解できる)ほうがいい。

そういう風に思えるサイトです。多分昔からあるのだろうと思いますが、昨日知りました。

pythonbooks.revolunet.com

全て、ではないけれどOpenBookというくくりになるのですかね。無料で読めます(たまに読めないものもあります)。

Pythonの書籍になった情報の他に、JavaScriptの本もあります。

jsbooks.revolunet.com

英語を読むことができれば、世界が広がりやすくなるかも。

入門 Python 3

入門 Python 3

 
これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん

これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん