Back home

SENI #034

SENI #034

SENI 034

Algoritma

292. Permainan Nim

Kesulitan: Mudah

Anda sedang memainkan Game Nim berikut dengan teman Anda: Ada tumpukan batu di atas meja, setiap kali salah satu dari Anda bergiliran mengeluarkan 1 hingga 3 batu. Siapa yang berhasil mengeluarkan batu terakhir, dialah pemenangnya. Anda akan mengambil giliran pertama untuk menghilangkan batu-batu itu.

Anda berdua sangat pintar dan memiliki strategi permainan yang optimal. Tuliskan fungsi untuk menentukan apakah Anda dapat memenangkan permainan berdasarkan jumlah batu di tumpukan.

Contoh:

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.
Solusi

perjalanan bisnis

Bahasa: cepat

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

8. String ke Integer (atoi)

Kesulitan: Sedang

Terapkan <span style="display: inline;">atoi</span> yang mengonversi string menjadi bilangan bulat.

Fungsi ini pertama-tama membuang karakter spasi putih sebanyak yang diperlukan hingga karakter non-spasi pertama ditemukan. Kemudian, mulai dari karakter ini, ambil tanda plus atau minus awal opsional diikuti dengan digit numerik sebanyak mungkin, dan interpretasikan sebagai nilai numerik.

String dapat berisi karakter tambahan setelah karakter yang membentuk bilangan integral, yang diabaikan dan tidak berpengaruh pada perilaku fungsi ini.

Jika urutan pertama karakter bukan spasi di str bukan bilangan integral yang valid, atau jika tidak ada urutan seperti itu karena str kosong atau hanya berisi karakter spasi putih, tidak ada konversi yang dilakukan.

Jika tidak ada konversi valid yang dapat dilakukan, nilai nol akan dikembalikan.

Catatan:

  • Hanya karakter spasi ' ' yang dianggap sebagai karakter spasi.
  • Asumsikan kita berhadapan dengan lingkungan yang hanya dapat menyimpan bilangan bulat dalam rentang bilangan bulat bertanda 32-bit: [−2<sup>31</sup>,  2<sup>31 </sup>− 1]. Jika nilai numerik berada di luar rentang nilai yang dapat direpresentasikan, INT_MAX (2<sup>31 </sup>− 1) atau INT_MIN (−2<sup>31</sup>) akan dikembalikan.

Contoh 1:

Input: "42"
Output: 42

Contoh 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.

Contoh 3:

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

Contoh 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.

Contoh 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.
Solusi

中规中矩的解法

Bahasa: cepat


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
    }
}

Ulasan

这篇文章讲的是Adaptor 适配器设计模式:

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

Kiat

CocoaPods, instalasi pod, dan https://github.com/CocoaPods/Specs master分支到~/.cocoapods/repos目录下,但是由于国内环境问题导致 git clone https://github.com/CocoaPods/Specs adalah solusinya.

解决办法:

menggunakan git clone https://git.coding.net/CocoaPods/Specs.git,https://gitclub.cn/CocoaPods/Specs

然后把Spesifikasi目录改名为master即可。~/.cocoapods/repos的目录层级如下: 15731384080733

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

Bagikan

昨天看到一个小伙子因为停车费,堵住了一个停车场大门,事情的起因是,小伙子是早上8点进入的停车场,下午2点离场,停车场的收费标准是停车不足12小时收费5元,但是收费员确要10元,收费50 orang, 50 orang, orang yang berumur 12 tahun 10元,进场有门禁和摄像;估计很多人也遇到过,但是由于赶时间等原因,很多人不想为了5块钱和他们争吵,但是这次他们却遇perusahaan asuransi kesehatan; perusahaan asuransi kesehatan还是值得肯定的,生活中要多有这样的人,我们的生活或许会更美好; perusahaan asuransi kesehatan, perusahaan asuransi kesehatan, perusahaan asuransi kesehatan, perusahaan asuransi perusahaan asuransi, perusahaan asuransi kesehatan, perusahaan asuransi kesehatan 5 hari kerja, 5 hari kerja, 3 hari kerja, 5 hari kerja, 5 hari kerja, 5 hari kerja, 5 hari kerja, 5 hari kerja到这样的事都能站出来较真一下,维护规则,那么我们的生活会少很多藏污纳垢的地方。