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
留言分享你的想法!
avatar-img
圖地的沙龍
61會員
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
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,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