WeHelp Coding 程式題目解答 31~40

更新 發佈閱讀 12 分鐘

WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。目前系統提供Python和JavaScript兩種程式語言解題,本文用JavaScript解題,附上題目和註解供大家參考。

31. 交換資料的位置

輸入一個包含兩個整數的陣列 / 列表,將其中的兩個整數互相交換位置,回傳交換後的陣列 / 列表。

輸入範例:[2, 4]。回傳:[4, 2]

輸入範例:[1, -5]。回傳:[-5, 1]

輸入範例:[0, 100]。回傳:[100, 0]

// @param ns:{[Integer]}
// @return :{[Integer]}
function exchange(ns){
return [ns[1],ns[0]];
}

32. 基礎四則運算

輸入兩個整數,以及一個字串代表要做的運算是加、減、乘、除中的哪一個,計算並回傳運算的結果。輸入的字串可能是 + - * / 的其中一個符號,分別代表加、減、乘、除的運算。其中除法的結果,使用無條件捨去取整數。

輸入範例:3、2、"+"。回傳:5

輸入範例:10、3、"/"。回傳:3

輸入範例:-6、8、"/"。回傳:-1

輸入範例:-5、2、"*"。回傳:-10

//    @param n1:{Integer}
// @param n2:{Integer}
// @param op:{String}
// @return :{Integer}
function calculate(n1, n2, op){
switch (op){
case "+":
return n1+n2;
case "-":
return n1-n2;
case "*":
return n1*n2;
case "/":
return Math.floor(n1/n2);
}
}

33. 計算 X 的 Y 次方

輸入兩個整數 X 和 Y,計算並回傳 X 的 Y 次方計算結果。

其中 X 介於 -30 ~ 30 之間,Y 介於 0 ~ 10 之間。

輸入範例:3、4。回傳:81

輸入範例:-5、0。回傳:1

輸入範例:-10、3。回傳:-1000

// @param x:{Integer}
// @param y:{Integer}
// @return :{Integer}
// 運算子
function power(x, y){
return x**y;
}
// Math方法
function power(x, y){
return Math.pow(x,y);
}
// 用迴圈​
function power(x, y){
if (y==0) return 1;
if (y==1) return x;
let ans = x;
for (let i=2; i<=y; i++){
ans = ans*x
}
return ans;
}

34. 計算百分比

輸入兩個非負整數,第一個代表完成的工作項目數量,第二個代表總共有多少工作項目。你的函式能計算出工作項目的完成率,並且用百分比的字串格式輸出,無條件捨去到整數的部份。

輸入範例:0、20。回傳:"0%"

輸入範例:21、40。回傳:"52%"

輸入範例:3、11。回傳:"27%"

輸入範例:60、60。回傳:"100%"

//  @param completed:{Integer}
// @param total:{Integer}
// @return :{String}
function toPercentage(completed, total){
return Math.floor(completed/total*100)+"%";
}

35. 班級成績的及格率

輸入一個整數陣列 / 列表,代表一個班級中所有學生的數學成績,其中成績為 0 ~ 100 之間的整數,且大於等於 60 分為及格。你的函式能計算並回傳班級成績的及格率,使用百分比的字串格式輸出,無條件捨去到整數的部份。

輸入範例:[70, 0, 33, 60, 2, 59]。回傳:"33%"

輸入範例:[65, 77, 81, 100]。回傳:"100%"

輸入範例:[51, 40, 10]。回傳:"0%"

//  @param grades:{[Integer]}
// @return :{String}
// forEach解法
function getPassRate(grades){
let pass = 0;
grades.forEach (g => { if (g>=60) pass++ });
return Math.floor(pass/grades.length*100)+"%";
}
// reduce解法
function getPassRate(grades){
const pass = grades.reduce((acc,g) =>
g>=60 ? acc++ : acc, 0);
return Math.floor(pass/grades.length*100)+"%";
}

36. 找出不一樣的資料

輸入一個至少有三筆資料的整數陣列 / 列表,其中包含唯一一個和其他所有資料不同的整數。你的函式能找出並回傳這個整數所在的索引位置。

輸入範例:[5, 5, 0]。回傳:2

輸入範例:[1, 2, 1, 1, 1]。回傳:1

輸入範例:[-5, 8, 8, 8]。回傳:0

//  @param ns:{[Integer]}
// @return :{Integer}
function findUnique(ns){
// 若前兩個數字不同表示答案就在其中
if (ns[0] != ns[1]){
return ns[0] == ns[2] ? 1 : 0;
}// 前兩個相同就開始往後找
for (let i=2; i<ns.length; i++){
if (ns[i]!=ns[0]) return i;
}
}

37. 找出眾數

輸入一個非負整數陣列 / 列表,其中包含的非負整數在 0 ~ 20 之間,找出並回傳其中的眾數:即出現次數最多的整數值。你可以假設不會同時有多個眾數出現。

輸入範例:[1, 2, 1, 3, 1]。回傳:1

輸入範例:[6, 0, 8, 8, 10]。回傳:8

輸入範例:[0, 2, 0, 1, 1, 20, 0]。回傳:0

//  @param ns:{[Integer]}
// @return :{Integer}
// 做一個物件來存每個數字的次數 再尋找其中的最大值
function findMode(ns){
const counts = {};
let maxCount=0, maxKey;
for (let i=0; i<ns.length; i++){
let now​Key = ns[i];
counts[now​Key] = (counts[nowKey] || 0) +1;
if (counts[now​Key] > maxCount){
maxCount = counts[nowKey];
maxKey = nowKey;
}
}
return +maxKey; // key是文字要轉為數字
}
// 以下是原本的作法 要跑三次迴圈太沒效率
function findMode(ns){
const counts = {};
for (let i=0; i<ns.length; i++){
counts[ns[i]] == null ? counts[ns[i]] =1 : counts[ns[i]]++;
}
const maxValue = Math.max(...Object.values(counts));
for (let[k,v] of Object.entries(counts)){
if (v == maxValue) return +k;
}
}

38. 檢查是否為迴文

輸入一個包含英數字的字串,你的函式能夠檢查這個字串是否為一個「迴文」,若是,回傳真;否則,回傳假。迴文:從中間切開,左右兩邊對稱的字串。

輸入範例:"abccba"。回傳:真

輸入範例:""。回傳:真

輸入範例:"aba"。回傳:真

輸入範例:"aaaccc"。回傳:假

//    @param s:{String}
// @return :{Boolean}
function checkPalindrome(s){
for (let i=0; i < (s.length)/2 ; i++){
if (s[i] != s[s.length-1-i]) return false;
}
return true;
}

39. 去除重複的資料

輸入一個整數陣列 / 列表,其中包含的整數在 -20 ~ 20 之間,你的函式能夠去除重複出現的整數,只保留最前面 ( 最小索引 ) 的資料,回傳去除重複資料後的陣列 / 列表。

輸入範例:[3, 2, -6, 2, 3, 5, 2]。回傳:[3, 2, -6, 5]

輸入範例:[0, 0, 0, 0]。回傳:[0]

輸入範例:[1, -3, -5, 2, -5, 1]。回傳:[1, -3, -5, 2]

//  @param ns:{[Integer]}
// @return :{[Integer]}
// Set物件的資料不能重複 也就是會自動過濾不重複的資料
function removeDuplicates(ns){
const set = new Set();
for (let i=0; i<ns.length; i++){
set.add(ns[i])
}
return Array.from(set);
}
// 最簡潔的寫法 Set建構子可以放array
function removeDuplicates(ns){
return [...new Set(ns)];
}

40. 檢查方形是否有重疊的部份

輸入兩個陣列 / 列表代表兩個平面座標上的方形區塊,格式為 [x, y, w, h],其中 x 和 y 為整數,代表方形區塊左上角的座標點;w 和 h 為正整數,代表往右下方延伸的寬度和高度。

你的函式能判斷兩個方形區塊是否有重疊的部份,若有,回傳真;否則,回傳假。其中,邊線剛好碰到的情況也算是重疊。

平面座標定義:X 軸往右是正數、往左是負數;Y 軸往上是正數、往下是負數。

輸入範例:方形一:[0, 0, 10, 10] 方形二:[-5, 5, 5, 5]。回傳:真

輸入範例:方形一:[10, 0, 10, 5] 方形二:[30, 5, 10, 5]。回傳:假

輸入範例:方形一:[-5, -5, 20, 10] 方形二:[0, -10, 5, 5]。回傳:真

//  @param rect1:{[Integer]}
// @param rect2:{[Integer]}
// @return :{Boolean}
// 此圖邏輯與27題相同 區間重疊表示任一數列的上限>=另一數列的下限
// 若題目敘述太抽象 一定要畫圖理解再寫
function isOverlapping(rect1, rect2){
const [x1,y1,w1,h1] = rect1;
const [x2,y2,w2,h2] = rect2;
if (x1+w1>=x2 && x2+w2>=x1 && y1-h1<=y2 && y2-h2<=y1){
return true;
}
return false;
}


留言
avatar-img
圖地的沙龍
62會員
93內容數
喜歡地圖?熱愛圖表嗎? 圖地,是「圖表、地圖、資訊圖像」的創作園地。 這裡會使用圖像呈現數據資料, 透過數據看見現象趨勢與議題故事。 在 Instagram 和 Facebook 會比較頻繁更新圖表。若有適合的內容會節選修改後發表於此。歡迎大家前往追蹤~
圖地的沙龍的其他內容
2025/04/07
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/07
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/05
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/05
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/04
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
2025/04/04
WeHelp是台灣的軟體工程師社群,它的網站有程式解題系統 WeHelp Coding,提供基礎的程式練習題,適合新手熟悉語法、建立寫程式的邏輯思維。網站不會保留使用者的作答結果,因此我在這裡留下自己的解答,以及參考AI後修改的解法。本文用JavaScript解題,附上題目和註解供大家參考。
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News