Skip to content

Instantly share code, notes, and snippets.

@andy922200
Last active March 26, 2019 18:53
Show Gist options
  • Save andy922200/f6fd5c4cc41a2670fa7b5da46ca8b29c to your computer and use it in GitHub Desktop.
Save andy922200/f6fd5c4cc41a2670fa7b5da46ca8b29c to your computer and use it in GitHub Desktop.
[JS101] 用 JavaScript 一步步打造程式基礎 - 練習題(三)
//計算質數數量,並印出所有結果
function isPrime(n){
if(n===1) return false
for(var i=2; i<=Math.sqrt(n); i++){
if(n%i===0){
return false
}
}
return true
}
var total = 0
for (i = 1; i<=10000; i++){
if (isPrime(i)){
console.log(i + ' '+ isPrime(i))
total += 1
}
}
console.log('總共有'+ total+ ' 個質數。')
//印出聖誕樹 - 拆解所求成小各個小函式的組合
function toptree(n){
for(var i=1; i<=n; i++){
console.log(' '.repeat(n-i)+'*'.repeat(2*i-1))
}
}
function bottomtree(n){
for(var i=1; i<=n; i++){
console.log(' '.repeat(n-1)+'*')
}
}
function tree(n){
toptree(n)
bottomtree(n)
}
//排序就是找N次最小值
function findMin(arr){
var min = arr[0]
var minIndex = 0
for(var i = 1; i<arr.length; i++){
if (min > arr[i]){
min = arr [i]
minIndex = i
}
}
return minIndex
}
function sort(arr){
var result = []
var length = arr.length //因為會變動原本array的長度,所以要先儲存
for(var i=0; i<length;i++){
var minIndex = findMin(arr)
result.push(arr[minIndex])
arr.splice(minIndex,1)
}
return result
}
// 壓平多維度陣列(反覆呼叫自己)
function flatten(arr){
var result = []
for(var i=0; i<arr.length;i++){
if(Array.isArray(arr[i])){
var flatArr = flatten(arr[i]) // 若原始某一項為陣列,那就再做N次直到不是陣列為止
flatArr.forEach(function(value){
result.push(value)
})
}else{
result.push(arr[i])
}
}
return result
}
//二維陣列取值判斷 - OOXX 結果
function winner(arr){
for(var i=0; i<=2; i++){
if( (arr[i][0] === arr[i][1]) && (arr[i][1] === arr[i][2])){
return arr[i][0]
}
}
for(var j=0; j<=2; j++){
if( (arr[0][j] === arr[1][j]) && (arr[1][j] === arr[2][j])){
return arr[0][j]
}
}
if( (arr[0][0] === arr[1][1]) && (arr[1][1] === arr[2][2])){
return arr[1][1]
}
if( (arr[0][2] === arr[1][1]) && (arr[1][1] === arr[2][0])){
return arr[1][1]
}else
return 'draw'
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment