본문 바로가기

학교 공부/프로그래밍원리

과제 및 프로젝트 보호되어 있는 글입니다. 더보기
12/6 다시 푸는 Assignment 1 package hw1 import scala.annotation.tailrec import scala.util.control.TailCalls._ object Main { /** * Implement given functions, which are currently left blank. (???) * **WARNING: Please read the restrictions below carefully.** * * If you do not follow these, **your submission will not be graded.** * * 1. Do not use the keyword `var`. Use `val` and `def` instead. * 2. Do not use any library func.. 더보기
HW4-(1) /** * 32-bit raw bit stream. * * bits.length must be equal to 32 * bits.head must be an MSB of the value. */ sealed trait BinaryVal { val bits: List[Boolean] } // 32-bit raw int case class BinaryInt(bits: List[Boolean]) extends BinaryVal // 32-bit raw float case class BinaryFloat(bits: List[Boolean]) extends BinaryVal BinaryVal.scala sealed trait BinaryVal { val bits : List[Boolean] } case class.. 더보기
HW3 -(4) StackedArray 구현하기 final class StackedArray(val values: Array[NDArray]) extends NDArray { val ndim: Int = this.getShape.length val getShape: Array[Int] = { def func(res: Array[Int] = Array(), x: Array[NDArray]): Array[Int] = { if (x(0).ndim == 1) res ++ Array(x.length) ++ Array(x(0).values.length) else func(res ++ Array(x.length), x(0).values) } func(this.values) } def getArr(i: Int): NDArray = { if (i >= values.l.. 더보기
HW3 - (3) Matrix 구현하기 http://jaynewho.com/post/3 trait NDArrayOps[+T Float, that: NDArray): NDArray = ??? def equals(that: NDArray): Boolean = ??? } 아 또 reshape 에서 고비를 만났다........ 일단 Vector에서 썼던 코드를 참고해보자 매트릭스의 2차원 배열은 모두 일차원으로 바꿔서 매트릭스의 value === Array(Vector) 그 Vector의 value === Array[Float] 메트릭스의 value의 value들을 하나의 Array[Float]으로 만든다음 Vector의 reshape를 사용하면 되지 않을까?? val res:Array[Vector] = this.values val len = res.. 더보기
HW 3- (2) reshape 구현하기 Vector 에 대한 reshape 구현이다.추후에 수정할거 있으면 수정해보기!!! (오류 검토 못해봄)val a:Vector = new Vector(Array(1,2,3,4,5,6))//i번째 인덱스부터 n개씩 나눠진 Array 반환하기def sep(i:Int,n:Int):Array[Float]def func(x:Array[Float], shape:Int*):NDArray= { def sep(i:Int,n:Int,res:Array[Float]=Array()):Array[Float] ={ if(n==0) res else sep(i+1,n-1,res ++ Array(x(i))) } if(shape.length ==1) new Vector(x) else if (shape.length ==2.. 더보기
HW3 - (1) Matmulengine package hw3.matmulengine import hw3.ndarray.Matrix /** * Matrix multiplication engine. */ trait MatmulEngine { /** * Matrix multiplication. * * If the second dimension of the left matrix is not equal to * the first dimension of the right matrix, raise `NNException` * * @param left N x K matrix * @param right K x M matrix * @return N x M matrix */ def matmul(left: Matrix, right: Matr.. 더보기
1122 Stacking with Type Classes Part 3 - 53쪽 / 전체 슬라이드 기준 264 205쪽에서 다뤘었음 Stacking with traits Base trait Stack[A] { def get() : (A,Stack[A]) def put(x:A) : Stack[A] } Core class BasicIntStack protected (xs: List[Int]) extends Stack[Int] { override val toString = "Stack:" + xs.toString def this() = this(Nil) protected def mkStack(xs: List[Int]): Stack[Int] = new BasicIntStack(xs) def get(): (Int,Stack[Int]) = (xs.head, mkStack.. 더보기