Kata-C-Sharp-ListFiltering
題目過濾列表中不是整數的物件
思路使用 Enumerable.OfType 過濾
程式碼12345678910using System.Collections;using System.Collections.Generic;using System.Linq;public class ListFilterer{ public static IEnumerable<int> GetIntegersFromList(List<object> listOfItems) { return listOfItems.OfType<int>(); }}
改進的地方使用自訂的迭帶器這樣在輸入很大的時候效率會好一點
Kata-C-Sharp-MultiplesOf3or5
題目找出1~輸入數字區間中3和5的倍數加起來返回
思路循環一次數字區間檢查是不是3或5的倍數
程式碼1234567891011121314public static class Kata{ public static int Solution(int value) { int ans = 0; if(value <= 0 ) return 0; for(int i = 1; i < value ; i++){ if(i % 3 == 0 || i % 5 == 0){ ans += i; } } return ans ; }}
改進的地方
無題
using System;public static class Kata{ // return masked string public static string Maskify(string cc) { string ans =””; if(cc.Length < 5) return cc; for(int i = cc.Length-1 ; i > -1 ; i–){ if(i < cc.Length - 4){ ans+=”#”; }else{ ans+=cc[i]; } } return Reverse(ans); } public static string Reverse( string s ){ char[] charArray = s.ToCharArray(); Array.Reverse(charArray); return new string ...
Kata-C-Sharp-IsThisATriangle
題目給三個長度判斷能不能組成三角形
思路三角形的特性
任意兩邊加其他會大於第三邊
只需要判斷有沒有滿足這個特性還有是否為負數長度
程式碼1234567891011121314using System;public class Triangle{ public static bool IsTriangle(int a, int b, int c) { int [] arr = {a,b,c}; Array.Sort(arr); if( arr[0]+arr[1] <= arr[2]) return false; for(int i = 0 ; i<arr.Length ; i++){ if( arr[i] < 0) return false; } return true; }}
改進的地方可以更簡短只需要在返回時判斷有沒有符合特性就好
Kata-C-Sharp-BreakCamelCase
題目駝峰命名法切割
思路建立一個StringBuilder在遍歷字串的時候加入至StringBuilder並判斷是否為大寫,是的話在前面插入空格
程式碼123456789101112131415using System;using System.Text;public class Kata{ public static string BreakCamelCase(string str) { StringBuilder sb = new(); foreach(char c in str ){ if(Char.IsUpper(c)) sb.Append(' '); sb.Append(c); } return sb.ToString(); }}
改進的地方
Kata-C-Sharp-FindNextPerfectSquare
題目找到下一個平方數
比如:
121 = 11 * 11 需要回傳 144 = 12 * 12
思路1.找出平方根在加一返回此題關鍵是需要超高精度平方根運算方式 c#內建 Sqrt 的 double 精度不足在 11 位數以上會有細微偏差導致失敗
找出平方根有幾種方法:
牛顿迭帶法
巴比倫方法
程式碼1234567891011121314public class Kata { public static bool Narcissistic(int value) { char[] valString = Convert.ToString(value).ToCharArray(); int len = valString.Length; long sum = 0; foreach( char digitChar in valString){ int ...
Kata-C-Sharp-PlayingWithDigits
題目檢測輸入數字是否滿足以下特性
比如:
89 --> 81 + 92 = 89 * 1
695 --> 6² + 9³ + 5⁴= 1390 = 695 * 2
1234digPow(89, 1) should return 1 since 8¹ + 9² = 89 = 89 * 1digPow(92, 1) should return -1 since there is no k such as 9¹ + 2² equals 92 * kdigPow(695, 2) should return 2 since 6² + 9³ + 5⁴= 1390 = 695 * 2digPow(46288, 3) should return 51 since 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51
思路將數字轉為字串後遍歷對各個數字做a ^ p + b ^ (p+1) + c ^(p+2) + d ^ (p+3) + ...) 計算後加總起來,檢測是不是n的倍數
程式碼12345678910111213141516using Syst ...
Kata-C-Sharp-DuplicateEncoder
題目檢查輸入字串有沒有重複符號,如果出現次數超過一次用)表示沒有則使用(
比如:
1234"din" => "(((""recede" => "()()()""Success" => ")())())""(( @" => "))(("
思路遍歷字串紀錄出現次數,再依題目規則返回新的字串
程式碼123456789101112131415using System.Linq;public class Kata{ public static string DuplicateEncode(string word) { string ans = ""; foreach (char s in word) { int count = word.Where(w => char.To ...
CodeWars C# Does my number look big in this?水仙花數(Narcissistic)
題目檢測輸入數字是否是一個自戀數
比如:
153 = 1^3 + 5^3 + 3^3
1938 = 1^4 + 9^4 + 3^4 + 8^4
思路1.將數字轉字串再遍歷一遍對數字處理 (暴力解法)優點:簡單實現
可以改進的地方: 將數值儲存起來避免重複使用Pow計算、直接使用數學方法取得每個數字
程式碼1234567891011121314public class Kata { public static bool Narcissistic(int value) { char[] valString = Convert.ToString(value).ToCharArray(); int len = valString.Length; long sum = 0; foreach( char digitChar in valString){ int ...
重拾ReactNative(一)
前言最近主管終於放棄 Xamarin 改使用 ReactNative 開發 APP,作為提出建議的人這個任務最後也落到我頭上來了,記憶中最後一次使用 RN 已經是三年多前的事情了很多東西都不同了,於是只好在開發的過程中慢慢重新學習 ReactNative 還有其他的套件
安裝經過思考過後決定使用 expo,原因如下:
簡化開發流程
避免不必要的問題
速度還有方便性
其餘主要使用的套件有:
React Navigation
Redux
React Native Paper
React Native Render HTML
React Native Vector Icon
另外為了避免 JavaScript 各種神奇的問題,還有挑戰自我這次使用 TypeScript 做為開發語言
過程中遇到的各種問題TypeScript 型別TypeScript 作為 JavaScript 的超集提供了原本沒有的型別檢查功能,剛開始使用的時候在寫第一個 Component 的時候直接撞牆,這是一個類組建在 JavaScript 中是沒有問題的
12345678910111213class App ...