広く、深く

あるブログで知識が深くなるためには広くなければならないと書いてあった。深い知識がほしいと思っても色々な見方や考えから、たくさんの広い知識がないと深くなることができないのだろう。

難しい・・・

表面をペロッとなめたり、浅瀬でバシャバシャしているだけでは見えない世界を見るためには、進んで学んで実践していかないとならない。

そのほうが楽しそうだ!

Python pygame No.1 画面設定

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by devel on 2017/04/08.
import pygame
from pygame.locals import *
import sys

FPSCLOCK = pygame.time.Clock() # FPSを指定の準備

def main():
    pygame.init() #初期化

    # メイン画面のサイズ set_modeで一つだけ作れる
    screen = pygame.display.set_mode((600,500)) 
    pygame.display.set_caption('Test') # タイトルバーの文字



    while True: # 無限ループ
        
        screen.fill((0, 0, 0)) # 背景の色


        # 挙動によって処理を呼び出せる
        # 閉じるボタンとかクリックとか
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()


        pygame.display.update()# 画面の表示をアップデート
        FPSCLOCK.tick(10) #  FPSを指定

if __name__ == '__main__':
    main()

 

 

 

 

Python sorted関数 二重配列

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by devel on 2017/04/07.


def main():
    b = [('cathy', '4'), ('eijiro', '2'), ('alice', '6'), ('dad', '3'), ('betty', '5'), ('franca', '1')]
    
    
    b2 = list(map(lambda x:(x[0],int(x[1])), b)) #map関数で二重リストの中身を指定してintに変換 (x[0], x[1])

    print(sorted(b, key=lambda x:(x[1], x[0]), reverse=True)) # lambdaでソートを適応する場所を指定している。
    print(b2)
    
    
    """
    [('alice', '6'), ('betty', '5'), ('cathy', '4'), ('dad', '3'), ('eijiro', '2'), ('franca', '1')]
    [('cathy', 4), ('eijiro', 2), ('alice', 6), ('dad', 3), ('betty', 5), ('franca', 1)]
    """

if __name__ == '__main__':
    main()

 

うーん・・・

二重配列はややこしい・・・

python3.5と3.6で挙動が違うのもややこしやー

 

JavaScript 関数型プログラミング ストリーム

ストリームの値の移り変わり

 

/**
 * Created by devel on 2017/04/01.
 */
var expect = require('expect.js');


var succ = (n)=>{
    return n + 1
}
var enumFrom =(n)=>{
    return [n, (_)=>{
            return enumFrom(succ(n))
        }]
}
a = enumFrom(1) // nに1を代入

console.log(a)                   // [ 1, [Function] ]
console.log(a[0])                // 1
console.log('') 
console.log(a[1]())              // [ 2, [Function] ]
console.log(a[1]()[0])           // 2
console.log('')
console.log(a[1]()[1]())         // [ 3, [Function] ]
console.log(a[1]()[1]()[0])      // 3
console.log('')
console.log(a[1]()[1]()[1]())    // [ 4, [Function] ]
console.log(a[1]()[1]()[1]()[0]) // 4

 

 

 

 

JavaScript 関数型プログラミング 不変なデータ使いかた

不変なデータの定義と使い方

var empty = (_)=>{
    return null
}

var get = (key, obj) =>{
    return obj(key)
}

var set = (key, value, obj)=>{
    return (key2) =>{
        if(key===key2){
            return value
        }else{
            return get(key2,obj) //関数setに引数を渡している場合、セットされているobjの中身はempty
        }
    }
}

a = set('a','b',empty) //emptyにかっこはつけない 関数が返っている
console.log(get('a', a)) // a
console.log(get('hi', a)) // null

setで返すものは関数。

setすると、return (key2) =>{…}の”…”部分に関数を呼び出すときに渡した引数、key、value、objの値が設定される(設定?定義?される)。

getするときにkeyが違うときには、get(key2, empty)となり、empty(key2)、そしてnullを返す。