이터러블 프로그래밍 혹은 리스트 프로세싱 (lisp): 추억의 별 그리기, 구구단

이토니·2024년 1월 18일
0

JavaScript

목록 보기
29/33
post-thumbnail

추억의 별 그리기

별 그리기

<script>
  _.go(
    _.range(1, 6), // 별의 최대 개수
    _.map(_.range),
    _.map(_.map(_ => '*')),
    _.map(_.reduce((a,b) => `${a}${b}`)),
    _.reduce((a,b) => `${a}\n${b}`),
    console.log);
</script>

지연적으로 만들기

<script>
  _.go(
    L.range(1, 6), // 별의 최대 개수
    L.map(L.range),
    L.map(L.map(_ => '*')),
    L.map(_.reduce((a,b) => `${a}${b}`)),
    _.reduce((a,b) => `${a}\n${b}`),
    console.log);
</script>

다른 방법

<script>
  _.go(
    L.range(1, 6), 
    L.map(s => _.go( //s: stop 값
      L.range(s),
      L.map(_ => '*'),
      _.reduce((a,b) => `${a}${b}`)
    )),
    _.reduce((a,b) => `${a}\n${b}`),
    console.log);
</script>

다른 방법

<script>
  // seperator
  const join = sep => _.reduce((a,b) => `${a}${sep}${b}`);
  _.go(
    L.range(1, 6), // 별의 최대 개수
    L.map(L.range),
    L.map(L.map (_ => '*')),
    L.map(join('')),
    join('\n'),
    console.log);
</script>

구구단

  _.go(
    L.range(2, 10), // 2이상 10미만
    L.map(a => _.go( 
      L.range(1, 10), // 각각마다 1이상 10미만까지 돈다
      L.map(b => `${a}x${b}=${a*b}`), // a x b = ab
      join('\n') // join하며 new line
    )),
    join('\n\n'), // new line 두 번씩 (구구단별로 나눠지게)
    console.log); 
profile
cool & soft codes

0개의 댓글