Hatena::ブログ(Diary)

babu_babu_babooのごみ箱

2018-11-03

配列様って何?

11:18

久しくプログラミングから離れている。

勉強しようと思ったら

MDNの https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Indexed_collections#Working_with_array-like_objects

「配列様のオブジェクトを利用する」とある!

配列はとくに別格で「」を付けるのだろうか?

誤植だよね

恐れ多くて報告もひかえようっと。



memo

ローカルファイルに書き込む

{
  const
    DEFAULT_OPTIION = {
      type: 'text/csv',
      ending: 'transparent' //or 'native' 
    },
    
    DEFAULT_STATE = {
      open: false,
      auto_type: true
    },
    
    BOM = new Uint8Array ([0xEF, 0xBB, 0xBF]),
    
    HASH_TYPE = {
      csv: 'text/csv',
      html: 'text/html',
      txt: 'text/plane'
    };
  
  //__
  
  function main (fileName = null, str = '', argOption = {}, argState = { } ) {
    if (! fileName)
      throw new Error ('ファイル名が無効');
    
    let
      content = [ ];
      option = Object.assign ({ }, DEFAULT_OPTIION, argOption),
      state  = Object.assign ({ }, DEFAULT_STATE, argState);

    if (state.auto_type) {
      let rst_ = /\.(csv|html|txt)$/.exec (fileName);
      if (rst_) {
        let ext = rst_[1];
        option.type = HASH_TYPE[ext];
        if ('csv' === ext)
          content.push (BOM);
      }
    }
    
    content.push (str);
    
    let blob = new Blob (content, option);
    let navi = window.navigator.msSaveBlob;
    
    (navi)
    ? (state.open)
      ? navi.msSaveOrOpenBlob (blob, fileName)
      : navi.msSaveBlob (blob, fileName)
    : location.href = window.URL.createObjectURL(blob);
  }
  
  //__
  
  this.saveToLocalFile = main;
}
//document.getElementById("download").download = "temp.txt";
//saveToLocalFile ('testq.html', '<body></body>');

2018-10-31

2018-10-05

数独の正解確認のプログラムを作りたい

| 19:17

数独の正解確認のプログラムを作りたい
https://okwave.jp/qa/q9544201.html

やっぱり頭のネジが緩んでるな。間違いだらけだった。


let A = [
7,6,1, 3,5,2, 8,4,9,
5,8,2, 9,4,1, 3,7,6,
4,9,3, 7,6,8, 2,1,5,

6,2,8, 4,7,3, 9,5,1,
9,7,4, 1,2,5, 6,3,8,
3,1,5, 8,9,6, 4,2,7,

2,5,7, 6,8,4, 1,9,3,
8,3,9, 2,1,7, 5,6,4,
1,4,6, 5,3,9, 7,8,2

];

const
  SQRT = Math.sqrt,
  INT  = Math.floor,
  
  MAX  = SQRT (A.length),
  AREA = SQRT (MAX),
  COUNT = [...new Array (MAX)],
  
  slice = (i, n = AREA) => A.slice (i, i + n),
  
  is_aligned = ary => {
    let a = new Set (ary);
    return ary.every ((_, i) => a.has (i + 1));
  },
  
  getRow = row => slice (row * MAX, MAX), 
  getCol = col => COUNT.map ((_, i) => A[col + i * MAX]),
  getArea = area => {
    let i = INT (area / 3) * MAX * AREA + (area % AREA) * AREA;
    return slice (i).concat (slice (i + MAX), slice (i + MAX * 2));
  },
  
  check = () =>
    COUNT
    .reduce ((rst, _, i) => rst.concat ([getRow (i), getCol (i), getArea (i)]), [])
    .every (a => is_aligned (a));


alert (check () ? "出来た!": "できてな〜い!");


2018-10-02

月を印刷してみた。(最大サイズ:直径210mmギリ越)

| 10:12

f:id:babu_babu_baboo:20181002102811j:image

PLA 0.2mm積層 ファジースキン処理

40時間超ても印刷が終了しない。何時おわるんだよ〜!



f:id:babu_babu_baboo:20181002105815j:image

三宝作ってみた

PLA 0.2mm積層 これもファジースキン処理。

緑色で透明なフィラメントを使用する。

ラメが入ったような光沢をだす。

制作:2分割、総制作時間:約11時間

2018-09-05

ちょっと暇なので質問に答えてみた

| 18:23

URLによってHTMLのテキストを変更するコードを教えてください。
https://oshiete.goo.ne.jp/qa/10703653.html

あれ!? element.lang を使うべきだったよな



コードの意味(どのようなイベント発生など)を調べて
https://okwave.jp/qa/q9534243.html

かなり省略しすぎたか?まぁそのぶん理解もは早かろうて。

はやばやと自分から解説放棄した。

駄菓子菓子、可哀想だと思いちょっとだけ解説する。

あれならしない方が良かったのでは?と反省

丸投げになった。

「どこが悪いのかもわからない」そのまま返したい。


結局それは丸投げと同じになった。

think49think49 2018/09/08 20:46 amaryllis_watchさんはteratailでは方々に迷惑をかけていましたが、OKWaveに来ていたのですか…。
この人は基本、「分かりません」を盾にコードを出してもらうパターンですね。

babu_babu_baboobabu_babu_baboo 2018/09/08 22:01 お久しぶりです。

ちょっとだけ、わざと切れてみました。
多少強引な態度を示すのも面白いかな?と思って。

こうしてくれる人たちによって私の言動はささえられています!

babu_babu_baboobabu_babu_baboo 2018/09/08 22:22 無駄に文才をしめす

think49think49 2018/09/08 22:57 お久しぶりです。回答の中に見知った方がいるとほっとしますね。

> ちょっとだけ、わざと切れてみました。
#9を見ました。
しかし、私はamaryllis_watchさん自身が考え方を根本から変えないと、成長出来ないだろうなーと思います。

最近、分かってきた事ですが、初学者の中には、私や babu_babu_baboo さんとは全く違ったタイプの方がいるようです。
- 全く分からない状態からサンプルコードを探し、動くコードを見て満足する
- そして、そこからコードの意味を想像し、改変するが正常動作しないのでQ&Aサイトに質問をする。
- 回答を貰っても、基礎が出来てないので理解できない。
- 自分の中でイメージを膨らませて適当な予想をし、回答者に返答をする(当然、的外れ)
基礎が出来ていない人に説明しても時間の無駄なわけで、最近はかなり回答のモチベが下がってます。
babu_babu_baboo さんのように、理解して貰える方とコードの話をする方が数倍楽しい。

babu_babu_baboobabu_babu_baboo 2018/09/09 06:39 私も最近の質問者への回答は、モチベーションがあがりません。
回答者が示すサンプルも旧世代的なものばかり。
ES2015を策定した人たちが泣いていると思います。


>数倍楽しい
同感です。ありがとうございます。

think49think49 2018/09/09 10:59 > 回答者が示すサンプルも旧世代的なものばかり。
ES6的なコードという意味では、https://teratail.com/tags/JavaScript はそこそこ普及している感じですね。
https://ja.stackoverflow.com/questions/tagged/javascript は質問者にも回答者にも厳しいので、ビシバシ鍛えられます(が、質問の絶対数が少ない)。

質問の絶対数はteratailが頭一つとびぬけているので、好きな質問が見つかりやすいかもしれません。
例えば、
https://teratail.com/questions/82926
質問者のマナーはなってない事が多いので、コードを書く楽しみに時間を費やす方が建設的かも

babu_babu_baboobabu_babu_baboo 2018/09/10 17:13 >https://teratail.com/questions/82926

面白そうな課題です。
脳内では作り始めているのですが、うぅ時間が

think49think49 2018/09/15 09:17 https://teratail.com/questions/146686
肩慣らしとしては、この質問も面白いかもしれません。
単純な命題ですが、最適化を考え始めると、いろいろな実装法がありそうです。

babu_babu_baboobabu_babu_baboo 2018/09/15 19:44 え〜と、、、
回答例にないもというと
(ソートが無いだけ高速)
これしか思いつかなかったです。

var hoge = [
{
date:"7",
status:"C"
},
{
date:"6",
status:"B"
},
{
date:"5",
status:"D"
},
{
date:"4",
status:"B"
},
{
date:"3",
status:"A"
},
{
date:"2",
status:"C"
},
{
date:"1",
status:"A"
}
];

const N = 4;
const C = Array.prototype.concat;

let buf = [ ];

hoge.forEach (h => {
let {date} = h;

Array.isArray (buf[date])
? buf[date].push (h)
: buf[date] = [h];
});


let rst = C.call ([],
C.apply ([], buf.splice (N+1)),
C.apply ([], buf.splice (1))
).reverse ();


rst.forEach (r => console.log (r));

babu_babu_baboobabu_babu_baboo 2018/09/15 19:48 でも、 concat & splice は激遅かぁ。
添字に0が無い前提だしね。