面試題目記錄(1)

更新於 發佈於 閱讀時間約 2 分鐘
題目要求

題目敘述

撲克牌有4種花色,分別是黑桃、紅心、方塊跟梅花
其中每一中花色都有一個數字,範圍從1~13,總共13*4 = 52張牌
1) 請從52張牌中挑選13張牌,輸出第一列所示,牌跟牌之間用tab隔開。
2) 請將抽出的13張牌依數字由大至小排序,同樣數字下比花色,花色大小為
黑桃>紅心>方塊>梅花。
注意! 排序時不能使用內建的sort()

當下想到的解法

解題思路: 以python撰寫為例

  • 將花色以list存放,黑桃(0)、紅心(1)、方塊(2)、梅花(3)各自有對應的index。
  • 抽出來的牌以tuple表示,用dictionary存放這13張牌,想法上以hash map 為出發點。
例如抽出來的第2張牌是紅心8 -> { 2 : (1, 8) }

實作

隨機從數字0~3挑選花色,從1~13挑選數字,將數對存到tuple中作為value,第幾次選取作為key。因此在迴圈執行後,pickedCard裡面存放著這13次抽出來的牌,用迴圈依次輸出。
其中pickedCard取出的花色是以數字呈現,作為color的index得到實際的花色字串,在輸出時與轉換過的數字字串做串接,印出結果。
第2個部分要的是排序結果,但我並沒有使用排序,而是讓迴圈從數字13~1、花色從0~3依序檢查是否為被挑出來的牌,如果是就輸出。
簡單來說我使用的是檢查所有請況,從最大到最小,有符合要件就輸出。

感想

先前其實沒對撲克牌的題目做過練習,不過曾經在網路上看過JAVA寫的一些撲克牌程式的處理,因此至少會考慮把花色跟數字分開做處理。看到題目說明不能使用內建排序方法,原本想說自己寫一個function來用就好,不過頂多也就52張牌,於是就採取比較tricky的方式達到題目的要求。
考試當下是筆試不是上機,語法上也沒有那麼確定,不過事後寫出來還是有寫對9成的語法,也同時發現了沒注意到的bug,就是當我挑選的那13張牌有重複時,依序輸出就不會是13張牌,而是少於13張牌,然而實際上也不應該有重複的牌出現,算是沒注意到的大問題。

即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
13會員
65內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Err500 的其他內容
在youtube上找尋前端的小專案來練習,就發現了這個不是很難,又可以讓我練習怎麼把javascript用在網頁裡的專案,於是就跟者影片做了一遍。當然,比起前一個寫遊戲的影片來說,可以說是輕鬆很多。
回顧一路下來的成長過程,是回憶、是學習、是見聞、是醞釀;其中有歡樂、有悲傷、有火花、有感慨。 記得在國小的第一次段考,只有國文、數學兩項科目的考試上,在班級內出現了同學A、同學B兩位滿分。 問題來了:誰是第一名?
常見入門款Python、統計分析用R、轉職培訓JAVA、C#、IOS用Swift、前端萬用JavaScript、學校基礎C語言、進階C++、甚至是新潮的語言go,程式語言那麼多種到底該從哪個入門好?難道從Scratch開始?
Youtube上逛著逛著看到techwithtim的線上教學,這是一個pygame的模組練習,只\是我想了解深一點的是物件導向的寫法應用。影片大約兩小時,實際邊動手coding,一邊看著影片的講解,結果花在這上面的時間遠遠超過我的預期。
常常會在其他教學影片中看到if __name__ == "__main__"  的寫法,為什麼要這樣做呢?
安裝下載 在瀏覽器搜尋列上輸入python,找到官方網站後進入下方畫面。 Python 官方網站頁面 在Downloads下拉列表中,可以尋找使用者自己電腦對應的作業系統選項,而基本上旁邊會提供最新版本的選取方框,點擊並下載。
在youtube上找尋前端的小專案來練習,就發現了這個不是很難,又可以讓我練習怎麼把javascript用在網頁裡的專案,於是就跟者影片做了一遍。當然,比起前一個寫遊戲的影片來說,可以說是輕鬆很多。
回顧一路下來的成長過程,是回憶、是學習、是見聞、是醞釀;其中有歡樂、有悲傷、有火花、有感慨。 記得在國小的第一次段考,只有國文、數學兩項科目的考試上,在班級內出現了同學A、同學B兩位滿分。 問題來了:誰是第一名?
常見入門款Python、統計分析用R、轉職培訓JAVA、C#、IOS用Swift、前端萬用JavaScript、學校基礎C語言、進階C++、甚至是新潮的語言go,程式語言那麼多種到底該從哪個入門好?難道從Scratch開始?
Youtube上逛著逛著看到techwithtim的線上教學,這是一個pygame的模組練習,只\是我想了解深一點的是物件導向的寫法應用。影片大約兩小時,實際邊動手coding,一邊看著影片的講解,結果花在這上面的時間遠遠超過我的預期。
常常會在其他教學影片中看到if __name__ == "__main__"  的寫法,為什麼要這樣做呢?
安裝下載 在瀏覽器搜尋列上輸入python,找到官方網站後進入下方畫面。 Python 官方網站頁面 在Downloads下拉列表中,可以尋找使用者自己電腦對應的作業系統選項,而基本上旁邊會提供最新版本的選取方框,點擊並下載。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
題目敘述 Combination Sum II_Leetcode #40 給定一個整數陣列candidates 和 目標值target。 每個陣列元素只能選擇一次,請問有多少種組合方法,可以使得組合數總和 = target? 請把滿足組合數總和 = target的組合方法以陣列的形式返回答案
Thumbnail
塔羅牌擁有78張牌卡,由大牌、小牌(數字牌+宮廷牌)組建,大眾抽牌似乎都是78張一起混抽,那麼何不使用想解決的問題而去抽取相對應的牌卡呢?
Thumbnail
給定一個9x9的輸入陣列代表數獨題目已經 部分作答 的狀態, 請驗證已經作答的部分是否為合法的Sudoku的輸入。 註: 合法的Sudoku輸入必須滿足這些規則 1~9每一直排恰好出現一次。 1~9每一橫排恰好出現一次。 1~9在3x3的小方陣裏恰好出現一次。
Thumbnail
賓果這款遊戲我想大家應該都不陌生才對,常常會出現在各種活動場合,看誰最快達到指定的連線數量,誰就能得到獎品 賓果遊戲基本概念 這種賓果遊戲使用的卡片由一個5x5的方格組成,每個方格中填入1到25之間的數字,每張卡片上的數字排列是隨機的。 🕹️遊戲規則 準備工作:每個玩家獲得一張或多
Thumbnail
星盤棋 雙方各只有用十五枚基本棋。起始布置雙方各有三子環狀交錯放在六頂角上。雙方的基本棋子則各剩下十二枚,放在玩家旁作為棋庫。 每回合玩家從棋庫取一己子,將之從棋盤外黑點推入一棋格。該行方向緊密的棋子也會隨此動作一起移動一棋格。要是該行已充滿棋子,則無法推入。 當己方棋子有四枚以上緊密連線,
Thumbnail
給定一個整數陣列hand代表手牌點數,和參數groupSize。請問能不能每groupSize牌一組,每一組都拼出順子? 如果可以,返回True。如果無解,返回False。演算法使用最小堆積或排序。關鍵知識點:從小到大掃描每張牌,檢查能不能組成牌組長度為groupSize的順子即可。
Thumbnail
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
前言 上文提及訓練記憶術時常使用撲克牌做為訓練內容,在訓練時首先必須先將每一張的撲克牌轉換成一個圖像,然後以一次翻開兩張撲克牌的方式翻開,並迅速將這兩張圖像聯結在一起,接著將之放置在一個事先規畫好的固定的位置上,如此一一將兩張圖像聯結在一起,並將之放置在不同的位置上,在回憶時,順著位置走一圈就
Thumbnail
題目敘述 題目會給定我們一格花盆陣列flowerbed,和欲種植的花朵數目n。 花盆陣列中,0代表空位,1代表已經有種好的花盆存在。 種花的要求是,不能有兩兩相鄰的花盆出現,中間一定要間隔至少一個空位。 問我們在給定的條件下,能不能順利種完n個花朵盆栽? 若可以返回True,若無解返回Fa
Thumbnail
題目敘述 題目會給我們一個參數k 和 目標值n。 請問我們從1~9內挑k個相異的數字,使得他們的總和為n 的組合數有多少? 挑選時,每個數字必須相異,而且每個數字只能選一次。 題目的原文敘述 測試範例 Example 1: Input: k = 3, n = 7 Output: [
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
題目敘述 Combination Sum II_Leetcode #40 給定一個整數陣列candidates 和 目標值target。 每個陣列元素只能選擇一次,請問有多少種組合方法,可以使得組合數總和 = target? 請把滿足組合數總和 = target的組合方法以陣列的形式返回答案
Thumbnail
塔羅牌擁有78張牌卡,由大牌、小牌(數字牌+宮廷牌)組建,大眾抽牌似乎都是78張一起混抽,那麼何不使用想解決的問題而去抽取相對應的牌卡呢?
Thumbnail
給定一個9x9的輸入陣列代表數獨題目已經 部分作答 的狀態, 請驗證已經作答的部分是否為合法的Sudoku的輸入。 註: 合法的Sudoku輸入必須滿足這些規則 1~9每一直排恰好出現一次。 1~9每一橫排恰好出現一次。 1~9在3x3的小方陣裏恰好出現一次。
Thumbnail
賓果這款遊戲我想大家應該都不陌生才對,常常會出現在各種活動場合,看誰最快達到指定的連線數量,誰就能得到獎品 賓果遊戲基本概念 這種賓果遊戲使用的卡片由一個5x5的方格組成,每個方格中填入1到25之間的數字,每張卡片上的數字排列是隨機的。 🕹️遊戲規則 準備工作:每個玩家獲得一張或多
Thumbnail
星盤棋 雙方各只有用十五枚基本棋。起始布置雙方各有三子環狀交錯放在六頂角上。雙方的基本棋子則各剩下十二枚,放在玩家旁作為棋庫。 每回合玩家從棋庫取一己子,將之從棋盤外黑點推入一棋格。該行方向緊密的棋子也會隨此動作一起移動一棋格。要是該行已充滿棋子,則無法推入。 當己方棋子有四枚以上緊密連線,
Thumbnail
給定一個整數陣列hand代表手牌點數,和參數groupSize。請問能不能每groupSize牌一組,每一組都拼出順子? 如果可以,返回True。如果無解,返回False。演算法使用最小堆積或排序。關鍵知識點:從小到大掃描每張牌,檢查能不能組成牌組長度為groupSize的順子即可。
Thumbnail
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
前言 上文提及訓練記憶術時常使用撲克牌做為訓練內容,在訓練時首先必須先將每一張的撲克牌轉換成一個圖像,然後以一次翻開兩張撲克牌的方式翻開,並迅速將這兩張圖像聯結在一起,接著將之放置在一個事先規畫好的固定的位置上,如此一一將兩張圖像聯結在一起,並將之放置在不同的位置上,在回憶時,順著位置走一圈就
Thumbnail
題目敘述 題目會給定我們一格花盆陣列flowerbed,和欲種植的花朵數目n。 花盆陣列中,0代表空位,1代表已經有種好的花盆存在。 種花的要求是,不能有兩兩相鄰的花盆出現,中間一定要間隔至少一個空位。 問我們在給定的條件下,能不能順利種完n個花朵盆栽? 若可以返回True,若無解返回Fa
Thumbnail
題目敘述 題目會給我們一個參數k 和 目標值n。 請問我們從1~9內挑k個相異的數字,使得他們的總和為n 的組合數有多少? 挑選時,每個數字必須相異,而且每個數字只能選一次。 題目的原文敘述 測試範例 Example 1: Input: k = 3, n = 7 Output: [