Back home

الفنون رقم 034

الفنون رقم 034

الفنون 034

الخوارزمية

292. لعبة نيم

الصعوبة: سهل

أنت تلعب لعبة Nim التالية مع صديقك: هناك كومة من الحجارة على الطاولة، في كل مرة يتناوب أحدكم لإزالة 1 إلى 3 أحجار. الشخص الذي يزيل الحجر الأخير سيكون هو الفائز. سوف تأخذ المنعطف الأول لإزالة الحجارة.

كلاكما ذكي جدًا ولديك استراتيجيات مثالية للعبة. اكتب دالة لتحديد ما إذا كان بإمكانك الفوز باللعبة بالنظر إلى عدد الأحجار الموجودة في الكومة.

مثال:

Input: 4
Output: false 
Explanation: If there are 4 stones in the heap, then you will never win the game;
             No matter 1, 2, or 3 stones you remove, the last stone will always be 
             removed by your friend.
الحل

أفضل ما في الأمر هو شراء المنتجات

اللغة: سويفت

class Solution {
    func canWinNim(_ n: Int) -> Bool {
        
        return (n % 4 != 0)
    }
}

8. سلسلة إلى عدد صحيح (atoi)

الصعوبة: متوسطة

نفذ <span style="display: inline;">atoi</span> الذي يحول السلسلة إلى عدد صحيح.

تتجاهل الوظيفة أولاً أكبر عدد ممكن من أحرف المسافات البيضاء حتى يتم العثور على الحرف الأول الذي لا يحتوي على مسافة بيضاء. بعد ذلك، بدءًا من هذا الحرف، يأخذ علامة زائد أو ناقص أولية اختيارية متبوعة بأكبر عدد ممكن من الأرقام العددية، ويفسرها كقيمة رقمية.

يمكن أن تحتوي السلسلة على أحرف إضافية بعد تلك التي تشكل الرقم الصحيح، والتي يتم تجاهلها وليس لها أي تأثير على سلوك هذه الوظيفة.

إذا كان التسلسل الأول من الأحرف التي لا تحتوي على مسافات بيضاء في str ليس رقمًا صحيحًا صحيحًا، أو إذا لم يكن هناك مثل هذا التسلسل لأن إما str فارغة أو أنها تحتوي على أحرف مسافات بيضاء فقط، فلن يتم إجراء أي تحويل.

إذا تعذر إجراء أي تحويل صالح، يتم إرجاع قيمة صفر.

ملاحظة:

  • يعتبر حرف المسافة ' ' فقط بمثابة حرف مسافة بيضاء.
  • لنفترض أننا نتعامل مع بيئة يمكنها فقط تخزين الأعداد الصحيحة ضمن نطاق الأعداد الصحيحة ذات الإشارة 32 بت: [−2<sup>31</sup>,  2<sup>31</sup>− 1]. إذا كانت القيمة الرقمية خارج نطاق القيم القابلة للتمثيل، فسيتم إرجاع INT_MAX (2<sup>31</sup>− 1) أو INT_MIN (−2<sup>31</sup>).

مثال 1:

Input: "42"
Output: 42

مثال 2:

Input: "   -42"
Output: -42
Explanation: The first non-whitespace character is '-', which is the minus sign.
             Then take as many numerical digits as possible, which gets 42.

مثال 3:

Input: "4193 with words"
Output: 4193
Explanation: Conversion stops at digit '3' as the next character is not a numerical digit.

مثال 4:

Input: "words and 987"
Output: 0
Explanation: The first non-whitespace character is 'w', which is not a numerical 
             digit or a +/- sign. Therefore no valid conversion could be performed.

مثال 5:

Input: "-91283472332"
Output: -2147483648
Explanation: The number "-91283472332" is out of the range of a 32-bit signed integer.
             Thefore INT_MIN (−231) is returned.
الحل

中规中矩的解法

اللغة: سويفت


class Solution {
    func myAtoi(_ str: String) -> Int {
        var newStr = str
        for cha in  newStr {//去除空格
            if cha == " " {
                newStr.remove(at:str.startIndex)
            }
            else{
                break;
            }
        }
        
        if newStr.count == 0 {
            return 0;
        }
        
        var sign = 1
        let first = newStr[newStr.startIndex]
        if first == "+" {
            sign = 1
            newStr.remove(at:str.startIndex)
        }
        else if (first == "-"){
            sign = -1;
            newStr.remove(at:str.startIndex)
        }
           
        var result = 0
        var temp = 0
        
        for cha in  newStr {
            if cha < "0" || cha > "9" {
                return result
            }
            
            
            temp = temp * 10 + (Int(String(cha)) ?? 0)
            
            
            result = temp * sign
            if result  > Int(Int32.max)  {
                return Int(Int32.max)
            }
            else if result < Int(Int32.min) {
                return Int(Int32.min)
            }
        }
        
        return result
    }
}

مراجعة

محول الطاقة:

https://dandan2009.github.io/2019/10/30/design-patterns-by-tutorials-the-power-of-OOP-part-3/

نصائح

قم بتثبيت برنامج CocoaPods، وقم بتثبيت pod، وقم بتثبيت https://github.com/CocoaPods/Specs master分支到~/.cocoapods/repos目录下,但是由于国内环境问题导致 git clone https://github.com/CocoaPods/Specs هو الحل الأمثل.

الاسم:

تم إنشاء git clone https://git.coding.net/CocoaPods/Specs.git, أو https://gitclub.cn/CocoaPods/Specs

تم إنشاء المواصفات من قبل السيد ماستر.~/.cocoapods/repos的目录层级如下: 15731384080733

https://git.coding.net/CocoaPods/Specs.git和 https://gitclub.cn/CocoaPods/Specs都是国内镜像,要快很多,还可以直接下载zip包,然后解压到~/.cocoapods/repos目录即可。

شارك

لا داعي للقلق بشأن ما إذا كان الأمر كذلك أم لا كل ما عليك هو أن تحصل على 8 قطع من الورق أو 2 قطع من الورق أو قطعتين من الورق. يمكن أن يكون سعرها 12 دولارًا أو 5 جنيهات إسترلينية أو 10 جنيهات إسترلينية أو 10 جنيهات إسترلينية. يمكن أن يكون سعرها 50 دولارًا أمريكيًا أو 12 دولارًا أمريكيًا أو 12 دولارًا أمريكيًا 10 سنوات من العمر قد تكون أفضل من أي وقت مضى يجب أن يكون لديك 5 سنوات من الخبرة وتجربة أفضل من أي وقت مضى لا داعي للقلق بشأن ما إذا كان الأمر كذلك أم لا هل يمكن أن يكون الأمر كذلك؟ قد يكون من الصعب على أي شخص القيام بذلك في هذه الحالة، يجب أن تكون قادرًا على تحقيق المزيد من النجاح. قد يستغرق الأمر 5 سنوات، أو 3 سنوات، أو 5 سنوات، أو 3 سنوات، أو 5 سنوات، أو 3 سنوات، أو 3 سنوات، أو 5 سنوات من العمل. لا داعي للقلق بشأن هذه المشكلة.