Closed twy30 closed 3 years ago
又來打擾了 XD 再麻煩大大有空時,給予建議。感激不盡 orz
public int[] Shuffle(int[] unmodifiedArray, int halfOfArrayLength)
{
//製作新容器 List
List<int> shffledArray = new List<int>(halfOfArrayLength*2);
for (int i = 0; i < halfOfArrayLength; ++i)
{
//每加原始陣列的一個數字後,插入一個 halfOfArrayLength 起算的數字
shffledArray.Add(unmodifiedArray[i]);
shffledArray.Add(unmodifiedArray[i + halfOfArrayLength]);
}
//將容器的格式轉回成 Array
return shffledArray.ToArray();
}
@LPenny-github
又來打擾了 XD
實力就是這樣經由練習累積起來的 😊
public int[] Shuffle(int[] unmodifiedArray, int halfOfArrayLength)
unmodifiedArray
的語意是「未更改過的 array 」,在這個情景下,也可以叫它 originalArray
, inputArray
, 看你想要強調什麼樣的語意halfOfArrayLength
或許可以把 Array
說的更清楚一些,例如 halfOfOriginalArrayLength
List<int> shffledArray = new List<int>(halfOfArrayLength*2);
shffledArray
的拼字有個小錯誤,少了個 u
😅 應該是 shuffledArray
@twy30 首先,感謝大大的指教 orz
unmodifiedArray
originalArray
inputArray
我其實不確定這三者的區別 😅:未更改過的 vs. 原始的 vs. 輸入的
記得在 1480. Running Sum of 1d Array 有過這樣的討論,所以才選用 unmodified
(https://github.com/EngTW/English-for-Programmers/issues/70#issuecomment-721619970)
// 2. 先把最後一個數字記下來 int originalNumber = nums[nums.Length-1];
這裡的「最後一個數字」與 "original" 中間些微落差。
或許可以試試 "last unmodified number", 「最後一個未被更動的數字」。 🤔
但我覺得自己可能沒有搞懂三者真正的差別 🤔
halfOfArrayLength
halfOfOriginalArrayLength
當初是考量到盡量減少用字 🤔 因為,原始 inputArray / unmodifiedArray 和 outputArray / shuffledArray 是相同長度的。
不過,就為了少那一個字,讓人花時間想 哪來的 Array
XD 的確兩相權衡下,寫清楚比較好。
shffledArray
shuffledArray
對不起,一時不察 orz 下次會更注意 😆rz
@LPenny-github
不客氣 😊
我其實不確定這三者的區別 😅:未更改過的 vs. 原始的 vs. 輸入的
但我覺得自己可能沒有搞懂三者真正的差別 🤔
這裡沒有「唯一的正確答案」,就看你想要強調什麼語意、想要如何引導你的讀者。
在 https://github.com/EngTW/English-for-Programmers/issues/70#issuecomment-721619970 裡, nums
是「傳進來的參數 / 原本的數值」,而你的程式碼會去更動(modify) nums
的成員;在那個情景下,我會覺得 "unmodified" 與「那更動(modify)的動作」是更好的對映。
回到這題來,如果「該 int[]
參數」的 用途 就只是拿來作為「輸入(input)資料的來源」,那麼, inputArray
會更貼切一些。
易言之, unmodifiedArray
, originalArray
, inputArray
這三個名稱都能回答「這個 int[]
變數 是 什麼(what)」,而 inputArray
能更進一步回答「這個 int[]
變數 是 為了什麼(why)而存在的」。
@twy30 感謝大大 orz
教考卷!
# ruby
def shuffle(input_nums, second_half_start_index)
first_half_end_index = second_half_start_index - 1
# add the first element in the first half and second half to result every time
(0..first_half_end_index).inject([]) do |result, index|
combie_nums = [input_nums[index], input_nums[second_half_start_index + index]]
result + combie_nums
end
end
@lddr99
歡迎 😊
combie_nums = [input_nums[index], input_nums[second_half_start_index + index]]
我猜 combie
是 combine
的筆誤? 😊 或許原本是想寫 combined_nums
?
從「是什麼(what)」的角度來看的話,這個變數也可以命名為:
num_tuple
num_pair
另一個可能性,與題目中的 "shuffle" 稍微有連結:
shuffled_num_pair
可以參考看看 😊
... 從「是什麼(what)」的角度來看的話,這個變數也可以命名為:
num_tuple
num_pair
另一個可能性,與題目中的 "shuffle" 稍微有連結:
shuffled_num_pair
可以參考看看 😊
@twy30 學習了!
想問個問題,一般在看到 tuple
或是 pair
的變數命名結尾時,有辦法大概猜到資料型態是 Array 嗎?或是在 statically typed languages 中 IDE 可以直接提示,所以並不是那麼重要?
@lddr99
一般在看到 tuple 或是 pair 的變數命名結尾時,有辦法大概猜到資料型態是 Array 嗎?
我覺得不一定 🤔
例如說, C# 有 tuple 這個觀念,那習慣使用 C# 的讀者看到 tuple 或許會先想到 C# 的 tuple, 而非 array 。
反過來說,如果在某個專案/語言中,慣例是用 array 來實作 tuple, pair (甚至 list), 那或許讀者會第一時間聯想到 array 。
或是在 statically typed languages 中 IDE 可以直接提示,所以並不是那麼重要?
這大概無法一概而論 🤔 我想到這幾個方向:
等等。
https://leetcode.com/problems/shuffle-the-array/
請參考「刷 LeetCode 練習命名」 https://github.com/EngTW/English-for-Programmers/issues/69 😊