SENI #013
SENI #013
SENI adalah kegiatan yang diprakarsai oleh
由左耳朵耗子--陈皓: Kerjakan setidaknya satu pertanyaan algoritma leetcode setiap minggu, baca dan komentari setidaknya satu artikel teknis berbahasa Inggris, pelajari setidaknya satu keterampilan teknis, dan bagikan artikel yang berisi opini dan pemikiran. (Artinya, Algoritma, Review, Tip, dan Share disebut sebagai SENI) dan bertahan setidaknya selama satu tahun.
SENI 013
Ini adalah pasal 13
Pertanyaan algoritma algoritma
479. Produk Palindrom Terbesar
Kesulitan: Mudah
Temukan palindrom terbesar yang dibuat dari hasil kali dua bilangan n-digit.
Karena hasilnya bisa sangat besar, Anda harus mengembalikan mod palindrome terbesar 1337.
Contoh:
Masukan: 2
Keluaran: 987
Penjelasan: 99 x 91 = 9009, 9009 % 1337 = 987
Catatan:
Kisaran n adalah [1,8].
Solusi
Bahasa: C
Label soal ini mudah, yang bagi saya lebih sulit dibandingkan soal sulit yang saya kerjakan sebelumnya. Setelah saya pertama kali melihat label mudah, saya tidak terlalu memperhatikannya, jadi saya hanya menggunakan penelusuran brute force untuk melakukannya, melintasi semua kombinasi angka, menemukan produknya, lalu menilai apakah itu bilangan palindrom. Hasilnya adalah batas waktu. Saya mengujinya dan butuh beberapa menit untuk menjalankannya ketika n=5.
int largestPalindrome(int n) {
if (n==1) {
return 9;
}
long int left = 0;
for (long int i = 0; i < n; i++) {
left = left*10 + 9;
}
long int right = left;
long int low = pow(10,n-1);
int maxpalindrome = 0;
for (; left >0; left--) {
right=left;
for (; right >0; right--) {
int count = left * right;
int count1=count;
int palindrome = 0;
for (; count >0; ) {
palindrome = palindrome *10 + count%10;
count = count/10;
}
if (palindrome == count1) {
if (palindrome > maxpalindrome) {
maxpalindrome =palindrome;
}
}
}
}
return maxpalindrome%1337;;
Saya hanya bisa berubah pikiran. Saya pertama-tama mencari jumlah palindrom, lalu membaginya untuk melihat apakah memenuhi persyaratan. Hasilnya masih habis. Saya mencetaknya dan menemukan palindromnya cukup banyak.
int largestPalindrome(int n) {
if (n==1) {
return 9;
}
long int left = 0;
for (long int i = 0; i < n; i++) {
left = left*10 + 9;
}
long int right = left;
long int low = pow(10,n-1);
for (long int i = left * right; i>0; i--) {
long int count = i;
long int count1=count;
long int palindrome = 0;
for (; count >0; ) {
//找回文数 1234 4321
palindrome = palindrome *10 + count%10;
count = count/10;
if (count<palindrome) {
break;
}
if (count == palindrome) {
if (count > right) {
break;
}
for (long int j = left; j>count1/right; j--) {
if (count1%j ==0 ) {
return count1 % 1337;
}
}
}
}
}
return 0;
}
Pada akhirnya, saya masih belum bisa memberikan jawaban yang tidak batas waktunya. Jawaban di bawah ini berasal dari orang lain. Gunakan mereka untuk belajar dari:
long int creatPalindrome(long int num,int n){
long int p=num*pow(10,n);
for(int i=0;i<n;i++){
p=p+(num/(long int)pow(10,n-i-1))*(long int)pow(10,i);
num=num%(long int)pow(10,n-i-1);
}
return p;
}
int largestPalindrome(int n) {
if(n==1){return 9;}
long int p=pow(10,n)-1;
long int q=p;
long int temp=pow(10,n-1);
long int ret=0;
long int ret1=0;
while(p>=temp){
ret=creatPalindrome(p,n);
for(int i=q;i>=temp;i--){
ret1=ret/i;
if(ret1>=i){break;}
if(ret1>=temp&&ret%i==0)
{
return ret%1337;
}
}
p--;
}
return NULL;
}
Ulasan
1.Artikel ini berasal dari https://medium.freecodecamp.org/how-i-launched-an-ios-app-with-a-teenager-926b5a65a991 Artikel ini terutama membahas tentang mengajar anak remaja untuk mengimplementasikan APP terkait renang iOS.
https://medium.freecodecamp.org/how-i-launched-an-ios-app-with-a-teenager-926b5a65a991
Bagaimana Saya Meluncurkan Aplikasi iOS dengan Seorang Remaja
Cara beralih dari Awal ke aplikasi iPhone di App store Cara mendapatkan aplikasi iPhone dari awal di App Store
Sebagai tindak lanjut dari dua artikel saya sebelumnya, (Cara mengajarkan pemrograman kepada remaja dan Panduan Pemula untuk Raspberry Pi), saya ingin berbagi pengalaman saya dalam membantu remaja beralih dari coding di Scratch hingga membuat dan menerapkan aplikasi iOS. Sebagai tindak lanjut dari dua artikel saya sebelumnya, (Cara mengajarkan pemrograman kepada remaja dan Panduan Pemula untuk Raspberry Pi), saya ingin berbagi pengalaman saya membantu seorang remaja beralih dari coding dari awal hingga membuat dan menerapkan aplikasi iOS.
Seperti disebutkan dalam salah satu artikel saya sebelumnya, saya memperhatikan bahwa remaja memiliki keinginan yang kuat untuk melakukan sesuatu yang terasa lebih nyata. Jadi, pertanyaan wajar yang sering muncul di banyak kelas saya adalah “Bisakah kita membuat Aplikasi iPhone?”. Saya merasa bahwa ini adalah waktu yang tepat bagi siswa untuk membuat aplikasi, dan saya meminta mereka masing-masing untuk menyampaikan ide. Seperti disebutkan dalam salah satu artikel saya sebelumnya, saya memperhatikan bahwa remaja memiliki keinginan kuat untuk melakukan hal-hal yang terasa lebih autentik. Jadi, pertanyaan wajar yang sering muncul di banyak kelas saya adalah “Bisakah kita mengembangkan aplikasi iPhone?” Saya merasa sekarang adalah waktunya bagi siswa untuk mengembangkan aplikasi, dan saya meminta mereka masing-masing untuk memberikan ide.
Seminggu kemudian, salah satu siswa kembali dengan sebuah ide dan sepertinya itu sangat menarik, jadi kami memutuskan untuk meluangkan waktu di luar waktu kelas reguler dan membangunnya bersama. Dan kami mendapatkan aplikasi keren bernama SwimGrader. Seminggu kemudian, salah satu siswa kembali dengan ide yang sepertinya sangat menarik, jadi kami memutuskan untuk meluangkan waktu di luar waktu kelas reguler dan melakukannya bersama. Kami akhirnya mengembangkan aplikasi keren bernama Swim Grader.
Bagaimana SwimGrader muncul? Tentang apa SwimGrader?
Murid saya adalah seorang perenang yang rajin dan selalu penasaran seberapa bagus kemampuan berenangnya. Menilai kemampuan berenang Anda sendiri tidak terlalu jelas, dan sering kali Anda memerlukan seorang ahli untuk memberi tahu Anda seberapa baik Anda. Murid saya suka berenang dan selalu penasaran seberapa bagus kemampuan renangnya. Menilai kemampuan berenang Anda sendiri tidak selalu jelas, dan sering kali Anda memerlukan seorang ahli untuk memberi tahu Anda seberapa baik Anda.
Kita semua tahu bahwa menurunkan waktu putaran adalah tujuan yang diinginkan sebagian besar atlet, sehingga banyak orang yang mencoba melakukannya. Namun, cukup sulit untuk mengetahui secara detail apa yang harus Anda upayakan untuk mencapai waktu putaran yang lebih rendah. Tentu saja, Anda bisa mencoba menendang lebih cepat dan berlatih lebih banyak untuk mendapatkan lebih banyak otot renang, tapi itu biasanya bukan cara terbaik untuk meningkatkan kemampuan renang Anda. Kita semua tahu bahwa menurunkan waktu putaran adalah tujuan sebagian besar atlet, sehingga banyak yang mencoba melakukannya. Namun, cukup sulit untuk mengetahui apa yang harus Anda lakukan untuk mencapai waktu putaran yang lebih rendah. Tentu saja, Anda dapat mencoba tendangan yang lebih cepat dan lebih banyak latihan untuk mendapatkan lebih banyak otot renang, tapi itu biasanya bukan cara terbaik untuk meningkatkan kemampuan renang Anda.
Berdasarkan hal ini, murid saya berpikir bahwa orang memerlukan sesuatu yang dapat menentukan bidang renang mana yang harus mereka lakukan selanjutnya. Jadi, ide briliannya adalah membuat aplikasi yang dapat menilai berbagai aspek renang Anda dan memberi tahu Anda area mana yang harus Anda tingkatkan. Dari titik ini, murid-murid saya memutuskan bahwa orang memerlukan sesuatu untuk mengidentifikasi bidang renang mana yang harus mereka pelajari selanjutnya. Jadi, ide briliannya adalah membuat aplikasi yang akan menilai setiap aspek renang Anda dan memberi tahu Anda area mana yang harus Anda tingkatkan.
Mengetahui dari pengalaman betapa sulitnya meningkatkan kemampuan renang saya, saya sangat terkesan dengan idenya. Ini belum pernah saya dengar sebelumnya dan memiliki kegunaan khusus yang berpotensi memberi manfaat bagi banyak orang. Namun, karena siswa saya belum pernah membuat aplikasi iPhone sebelumnya, kami memutuskan untuk mengerjakannya bersama-sama dari awal. Mengetahui dari pengalaman betapa sulitnya meningkatkan kemampuan renang saya, saya terkesan dengan ide-idenya. Ini bukanlah sesuatu yang pernah saya dengar sebelumnya dan memiliki kasus penggunaan khusus yang berpotensi memberi manfaat bagi banyak orang. Namun, karena siswa saya belum pernah mengembangkan aplikasi iPhone sebelumnya, kami memutuskan untuk memulai dari awal bersama-sama.
Memulai
Saya sendiri tidak menjadi perenang yang kompetitif dan juga berpikir bahwa ini akan menjadi latihan pemikiran yang bagus, saya meminta siswa saya untuk membuat desain aplikasi dan metrik yang dapat kita gunakan untuk menilai perenang di aplikasi. Saya sendiri tidak menjadi perenang yang kompetitif, dan berpikir ini akan menjadi latihan pemikiran yang bagus, saya meminta siswa saya untuk membuat desain untuk aplikasi, dan metrik yang dapat kami gunakan untuk menilai perenang dalam aplikasi.Proses ini akhirnya menjadi pengalaman pembelajaran yang sangat bagus. Latihan ini tidak hanya membantu siswa menyelesaikan rincian proyek, namun juga menjaga harapan saya dan siswa saya tetap sejalan. Seperti disebutkan dalam artikel saya tentang mengajar remaja, remaja memiliki ekspektasi yang tinggi dalam melakukan apa pun dengan pemrograman. Jadi, setelah membahas setiap detail data apa yang harus dikumpulkan, halaman mana yang harus dibuat, cara kerja setiap transisi halaman, dan metrik mana yang harus ditampilkan, kami berdua harus menetapkan tujuan dan harapan kami dengan jelas. Prosesnya akhirnya menjadi pengalaman pembelajaran yang luar biasa. Latihan ini tidak hanya membantu siswa mengerjakan rincian proyek, namun juga memungkinkan saya menyelaraskan dengan harapan siswa. Seperti yang saya sebutkan di artikel saya tentang mengajar remaja, remaja memiliki ekspektasi yang tinggi terhadap pemrograman. Jadi, setelah mendiskusikan secara rinci data apa yang harus dikumpulkan, halaman mana yang harus dibuat, cara kerja setiap konversi halaman, dan metrik apa yang harus ditampilkan, kami semua memiliki tujuan dan harapan yang jelas.
Dan mengetahui produk akhir yang tepat yang kami rencanakan membantu siswa tetap terlibat secara konstan. Mengetahui dengan tepat produk akhir yang kami rencanakan akan membantu siswa tetap terlibat.
Sedikit melenceng dari topik utama, seringkali kita mempelajari hal-hal yang kita tidak tahu kapan akan kita terapkan dalam kehidupan kita. Hal ini dapat membuat kita merasa seperti sedang berjalan melalui terowongan gelap yang panjang tanpa cahaya di ujungnya. Kita sering mempelajari hal-hal yang kita tidak tahu kapan akan kita terapkan dalam kehidupan kita. Hal ini dapat membuat kita merasa seperti sedang berjalan melalui terowongan gelap yang panjang tanpa cahaya di ujungnya.
Hal ini terutama berlaku ketika Anda masih muda, karena kemungkinan besar Anda diminta untuk mempelajari hal-hal tertentu. Saya yakin hal ini menyebabkan banyak siswa tidak bersemangat dengan apa yang mereka pelajari. Saya belajar bahwa menetapkan ekspektasi yang tepat dengan menunjukkan akhir perjalanan suatu latihan pembelajaran sangat membantu memotivasi siswa dan meningkatkan efisiensi latihan pembelajaran itu sendiri. Hal ini terutama berlaku ketika Anda masih muda, karena kemungkinan besar Anda diminta untuk mempelajari hal-hal tertentu. Menurut saya hal ini mengakibatkan banyak siswa tidak tertarik dengan apa yang dipelajarinya. Saya belajar bahwa menetapkan ekspektasi yang tepat dengan menunjukkan di mana proses pembelajaran akan berakhir sangat membantu dalam memotivasi siswa dan membuat proses pembelajaran itu sendiri menjadi lebih efisien.
Jadi, kembali ke desain dan metrik aplikasi yang disarankan siswa: siswa saya pertama kali menyarankan agar aplikasi, secara umum, tidak menambah overhead apa pun untuk perenang. Ia ingin membangun sebuah aplikasi yang mampu mengumpulkan statistik tanpa mengganggu performa perenang. Jadi, kembali ke desain dan metrik aplikasi yang disarankan siswa: Siswa saya pertama kali menyarankan aplikasi yang, secara umum, tidak boleh menambah biaya tambahan bagi perenang. Dia ingin mengembangkan aplikasi yang dapat mengumpulkan statistik tanpa memengaruhi performa perenang.
Siswa sudah memikirkan alat pengukur untuk memenuhi tujuan ini, yang akan saya bagikan di bagian selanjutnya. Setelah beberapa diskusi untuk menghasilkan produk minimal yang layak, kami memutuskan bahwa kami harus fokus pada pengumpulan dua metrik spesifik: head bops dan kecepatan belok. Siswa sudah memikirkan alat pengukur untuk tujuan ini, yang akan saya bagikan kepada Anda di bagian selanjutnya. Setelah beberapa diskusi, kami menghasilkan produk minimum yang layak dan kami memutuskan bahwa kami harus fokus pada pengumpulan dua metrik spesifik: head BOP dan kecepatan putaran.
Karena head bop sebagian besar merupakan gerakan asing yang dapat mengurangi efisiensi berenang, jika kita dapat menghitung jumlah head bop dalam interval waktu tertentu, kami berpikir bahwa kami dapat menyarankan pengurangan gerakan kepala yang asing. Karena benturan di kepala adalah gerakan asing yang dapat mengurangi efisiensi berenang, jika kita dapat menghitung jumlah benturan di kepala selama periode waktu tertentu, kami pikir kami dapat merekomendasikan untuk mengurangi gerakan kepala yang asing.
Kami juga sepakat bahwa tikungan cepat diperlukan untuk mengurangi waktu putaran. Jadi, jika kita bisa mengukur waktu yang dibutuhkan seorang perenang untuk berbelok di ujung jalur, kita bisa menilai perenang tersebut berdasarkan waktu. Kami juga setuju bahwa menikung cepat diperlukan untuk meningkatkan waktu putaran. Jadi, jika kita bisa mengukur berapa lama waktu yang dibutuhkan seorang perenang untuk berbelok di ujung jalur, kita bisa menilai perenang tersebut berdasarkan waktu tersebut.
Mengingat desain dan ide ini, kami hanya perlu mulai mengimplementasikannya dengan sensor yang tepat. Dengan mempertimbangkan desain dan ide ini, kita hanya perlu mulai mengimplementasikannya dengan sensor yang tepat.
Jadi, perangkat keras manakah yang memungkinkan SwimGrader? Jadi, perangkat keras apa yang memungkinkan SwimGrader?
Meskipun iPhone terbaru tahan air, para perenang mungkin tidak ingin mengambil risiko membawa iPhone super mahal mereka ke dalam kolam. Jadi, murid saya menyarankan agar kami menggunakan sensor dari mbientlab dan memasukkannya ke dalam wadah tahan air. Meskipun iPhone terbaru tahan air, perenang mungkin tidak ingin mengambil risiko membawa iPhone super mahal ke dalam kolam. Jadi, murid-murid saya menyarankan agar kami menggunakan sensor dari mbientlab dan merangkumnya dalam wadah kedap air.
Sensor ini memungkinkan Anda mengumpulkan berbagai data dari lingkungan dan pergerakan Anda, karena di dalamnya terdapat akselerometer, giroskop, barometer, termometer, dan sebagainya. Selain itu, mereka memiliki beberapa kode contoh yang dapat Anda gunakan untuk mem-bootstrap aplikasi Anda sehingga Anda dapat segera mengumpulkan data yang diinginkan. Sensor ini memungkinkan Anda mengumpulkan berbagai data dari lingkungan dan pergerakan Anda, karena berisi akselerometer, giroskop, barometer, termometer, dan banyak lagi. Selain itu, mereka memiliki beberapa kode contoh yang dapat Anda gunakan untuk mem-bootstrap aplikasi Anda agar segera mengumpulkan data yang diinginkan.Jadi, ide kami adalah memasukkan sensor ke dalam topi renangnya. Dia merasa bahwa hal ini hanya akan berdampak minimal pada kemampuan berenang para perenang, dan saya setuju. Kami segera membeli dua sensor ini dan mulai membangun aplikasi kami. Saya tidak akan membahas detail pembuatan aplikasi iOS multi-halaman sederhana menggunakan Swift, karena mereka telah membahas ribuan artikel lainnya (inilah artikel media bagus yang menyajikan banyak di antaranya). Jadi, idenya adalah memasukkan sensor ke dalam topi renangnya. Dia merasa hal ini akan berdampak minimal pada kemampuan berenang seorang perenang, dan saya setuju. Kami segera membeli dua sensor ini dan mulai membangun aplikasi kami. Saya tidak akan membahas detail pembuatan aplikasi iOS multi-halaman sederhana menggunakan Swift, karena semuanya telah dibahas di ribuan artikel lainnya (inilah banyak artikel media yang bagus).
Jendela Aplikasi SwimGrader
Memperkenalkan SwimGrader
Jadi, setelah berjam-jam memprogram dan melalui Apple agar aplikasi kami disetujui di App Store, kami akhirnya dapat meluncurkan SwimGrader. Sungguh mengejutkan melihat hal ini, karena saya hanya membantu pengaturan awal proyek, yang terdiri dari menyiapkan proyek Swift aplikasi satu halaman dan membantu menambahkan tombol dan bidang teks, serta integrasi perangkat keras sederhana untuk mengambil data dari sensor. Jadi, setelah berjam-jam pemrograman, dan aplikasi kami disetujui oleh App Store melalui Apple, kami akhirnya siap meluncurkan Swim Grader. Sungguh mengejutkan melihat hal ini karena saya hanya membantu pengaturan awal proyek, yang mencakup menyiapkan proyek Swift aplikasi satu halaman, membantu menambahkan tombol dan bidang teks, dan integrasi perangkat keras sederhana untuk mengambil data dari sensor.
Untuk memberikan gambaran betapa mudahnya integrasi perangkat keras, berikut cuplikan kode untuk membuat LED pada sensor berkedip hijau. Mengambil data juga sesederhana seperti yang dapat dilihat pada contoh di bawah ini. Untuk mengilustrasikan betapa mudahnya integrasi perangkat keras, berikut cuplikan kode yang membuat LED pada sensor tampak hijau. Mengambil data sangat sederhana, seperti yang ditunjukkan pada contoh di bawah ini.
import MetaWear
import MetaWearCpp
MetaWearScanner.shared.startScan(allowDuplicates: true) { (dev) in
// We found a MetaWear board, see if it is close by
if dev.rssi.intValue > -50 {
// We found a MetaWear board!
MetaWearScanner.shared.stopScan()
// Connect to the board we found
dev.connectAndSetup().continueWith { t in
if let error = t.error {
// Sorry we couldn't connect
print(error)
} else {
// We are connected! Flash its LED!
var pattern = MblMwLedPattern()
mbl_mw_led_load_preset_pattern(
&pattern, MBL_MW_LED_PRESET_PULSE)
mbl_mw_led_stop_and_clear(device.board)
mbl_mw_led_write_pattern(
device.board, &pattern, MBL_MW_LED_COLOR_GREEN)
mbl_mw_led_play(device.board)
}
}
}
}
Dengan bantuan yang terbatas, siswa saya melampaui ekspektasi saya dalam membangun algoritme penilaian dan antarmuka grafis. Dia mengambil data X, Y, Z dari sensor dan memberi nilai seberapa banyak kepala bergerak di setiap arah. Dia mencari perpustakaan grafik di iOS secara online dan menampilkan apa yang dilaporkan sensornya. Dan, setelah menyelesaikan aplikasinya, dia melanjutkan dan menguji aplikasinya di pool! Dengan bantuan terbatas, siswa saya melampaui harapan saya dan membangun algoritma penilaian dan antarmuka grafis. Ia mengambil data X, Y, Z dari sensor dan memberikan derajat pergerakan kepala di setiap arah. Dia menelusuri web untuk perpustakaan grafis di iOS dan menampilkan apa yang dilaporkan sensor. Setelah menyelesaikan aplikasinya, dia melanjutkan pengujian aplikasinya di pool!
Ini adalah upaya siswa sekolah menengah, jadi tidak akan terlihat mewah seperti Clash of Clans. Namun, menurut saya ini sangat mengesankan, datang dari seorang siswa muda yang belum pernah membuat aplikasi iPhone sebelumnya! Setelah menyelesaikan ini, siswa tersebut bertanya kepada saya, Ini adalah upaya sekolah menengah, jadi tidak terlihat semewah Clash of Clans. Namun, menurut saya ini sangat mengesankan, datang dari seorang siswa muda yang belum pernah mengembangkan aplikasi iPhone! Setelah melakukan ini, siswa tersebut bertanya kepada saya,
Bisakah kita membuat Aplikasi Apple Watch untuk ini? Bisakah kita membuat Aplikasi Apple Watch untuk ini?
Saya mengatakan kepadanya bahwa dia pasti dapat membuat aplikasi versi Apple Watch di masa mendatang, tetapi dia mungkin dapat membuatnya tanpa bantuan saya :). Saya mengatakan kepadanya bahwa dia pasti dapat mengembangkan aplikasi versi Apple Watch di masa mendatang, tetapi dia mungkin tidak memerlukan bantuan saya untuk melakukannya :).
Pikiran Terakhir
Sebagai orang dewasa, menurut saya sangat sulit untuk menjaga ide-ide kita tetap segar, liar, dan terkini. Jadi, menurut saya mendengarkan apa yang dikatakan para siswa muda ini dan mendukung apa yang ingin mereka lakukan dengan segala cara yang kita bisa adalah hal yang sangat mendidik. Sebagai orang dewasa, menurut saya sangat sulit untuk menjaga pikiran kita tetap segar, liar, dan relevan. Jadi, menurut saya sangat mendidik untuk mendengar pendapat para siswa muda ini dan mendukung apa yang ingin mereka lakukan.
Peluang ini tidak hanya membuka pintu untuk menciptakan produk baru dan menarik, namun mendukung siswa untuk menyampaikan dan membangun ide mereka sendiri akan memberi mereka pengalaman pendidikan terbaik. Melihat murid saya meminta orang mengunduh aplikasinya membuat saya tersenyum. Saya berharap suatu hari nanti saya bisa membuat aplikasi keren dan memamerkannya kepada teman-teman saya. Meskipun begitu, muridku baru saja mengalahkanku dalam hal itu :) Peluang ini tidak hanya membuka pintu untuk mengembangkan produk baru dan menarik, namun juga mendukung siswa dalam memasarkan dan membangun ide mereka sendiri untuk memberikan mereka pengalaman pendidikan terbaik. Saya tertawa melihat murid saya membuat orang mengunduh aplikasinya. Saya berharap suatu hari nanti saya bisa mengembangkan aplikasi keren dan menunjukkannya kepada teman-teman saya. Meskipun begitu, murid-muridku baru saja mengalahkanku :)
Sebagai tambahan, saya belajar bahwa membuat aplikasi iOS yang keren kini lebih mudah dari sebelumnya. Ada begitu banyak artikel yang membantu Anda membuat aplikasi untuk setiap tujuan: game, aplikasi tampilan tunggal, aplikasi jejaring sosial, dan banyak lagi. Selain itu, terdapat lebih banyak perangkat keras dari sebelumnya yang dapat Anda sambungkan dengan mudah ke ponsel dan memperluas kemampuan ponsel Anda. Ngomong-ngomong, saya belajar bahwa membuat aplikasi iOS yang keren kini lebih mudah dari sebelumnya. Ada banyak artikel untuk membantu Anda mengembangkan aplikasi untuk semua kemungkinan tujuan: permainan, aplikasi tampilan tunggal, aplikasi jejaring sosial, dan banyak lagi. Selain itu, kini terdapat lebih banyak perangkat keras yang dapat Anda sambungkan dengan mudah ke ponsel dan memperluas fungsionalitas ponsel Anda.
Saya harap saya dapat segera berbagi pengalaman dalam membangun aplikasi saya sendiri. Saya hanya khawatir jika siswa saya akan menganggap aplikasi saya keren… Saya harap saya dapat segera berbagi pengalaman saya dalam mengembangkan aplikasi. Saya hanya khawatir apakah siswa saya akan menganggap aplikasi saya keren…Terima kasih telah membaca artikel ini! Saya harap saya dapat meyakinkan Anda untuk bekerja dengan siswa atau anak-anak Anda dan mulai membuat aplikasi sederhana! Saya juga terbuka untuk mendengar tentang ide aplikasi keren Anda. Terima kasih telah membaca artikel ini! Saya harap saya dapat meyakinkan Anda untuk bekerja dengan siswa atau anak-anak Anda dan mulai membuat aplikasi sederhana! Saya juga ingin mendengar ide Anda untuk aplikasi keren.
- Minggu ini saya menerjemahkan bagian bab pertama yang belum diterjemahkan minggu lalu. Bab pertama telah diterjemahkan: https://dandan2009.github.io/2018/10/26/Instruments-chinese-translation/
TIPS
Minggu ini saya mengalami masalah dengan NSCharacterSet, jadi saya mempelajari NSCharacterSet ini dan menemukan bahwa fungsi NSCharacterSet cukup kuat.
NSKarakterSet
Objek yang mewakili kumpulan nilai karakter Unicode tetap untuk digunakan dalam operasi pencarian. Objek yang mewakili sekumpulan nilai karakter Unicode tetap yang digunakan untuk operasi pencarian.
Ikhtisar
Objek NSCharacterSet mewakili sekumpulan karakter yang sesuai dengan Unicode. Objek NSString dan NSScanner menggunakan objek NSCharacterSet untuk mengelompokkan karakter bersama-sama untuk operasi pencarian, sehingga mereka dapat menemukan kumpulan karakter tertentu selama pencarian. Dua kelas publik cluster, NSCharacterSet dan NSMutableCharacterSet, masing-masing mendeklarasikan antarmuka terprogram untuk rangkaian karakter statis dan dinamis. Objek NSCharacterSet mewakili kumpulan karakter yang sesuai dengan Unicode (kompatibel dengan kepatuhan). Objek NSString dan NSScanner menggunakan objek NSCharacterSet untuk mengelompokkan karakter untuk operasi pencarian sehingga mereka dapat menemukan sekumpulan karakter tertentu selama proses pencarian. Dua kelas publik cluster, NSCharacterSet dan NSMutableCharacterSet, masing-masing mendeklarasikan antarmuka pemrograman untuk rangkaian karakter statis dan dinamis.
Objek yang Anda buat menggunakan kelas-kelas ini disebut sebagai objek kumpulan karakter (dan jika tidak terjadi kebingungan, hanya sebagai kumpulan karakter). Karena sifat cluster kelas, objek kumpulan karakter bukanlah instance sebenarnya dari kelas NSCharacterSet atau NSMutableCharacterSet tetapi dari salah satu subkelas privatnya. Meskipun kelas objek kumpulan karakter bersifat pribadi, antarmukanya bersifat publik, seperti yang dideklarasikan oleh superkelas abstrak ini, NSCharacterSet dan NSMutableCharacterSet. kelas mengadopsi protokol NSCopying dan NSMutableCopying, sehingga memudahkan untuk mengkonversi kumpulan karakter dari satu tipe ke tipe lainnya. Objek yang dibuat menggunakan kelas-kelas ini disebut objek kumpulan karakter (hanya kumpulan karakter jika hal ini tidak membingungkan). Karena sifat pengelompokan kelas, objek kumpulan karakter bukanlah turunan sebenarnya dari kelas NSCharacterSet atau NSMutableCharacterSet, tetapi turunan dari salah satu subkelas privatnya. Meskipun kelas objek himpunan karakter bersifat pribadi, antarmukanya bersifat publik, dideklarasikan oleh superkelas abstrak NSCharacterSet dan NSMutableCharacterSet. Kelas himpunan karakter mengadopsi protokol NSCopying dan NSMutableCopying, sehingga memudahkan untuk mengonversi satu jenis himpunan karakter ke jenis himpunan karakter lainnya.
Kelas NSCharacterSet mendeklarasikan antarmuka terprogram untuk objek yang mengelola sekumpulan karakter Unicode (lihat spesifikasi cluster kelas NSString untuk informasi tentang Unicode). Metode primitif utama NSCharacterSet, characterIsMember:, menyediakan dasar untuk semua metode instance lainnya di antarmukanya. Subkelas NSCharacterSet hanya perlu mengimplementasikan metode ini, ditambah mutableCopyWithZone:, untuk perilaku yang tepat. Untuk performa optimal, subkelas juga harus mengganti bitmapRepresentation, yang sebaliknya bekerja dengan memanggil characterIsMember: untuk setiap nilai Unicode yang mungkin. Kelas NSCharacterSet mendeklarasikan antarmuka pemrograman untuk objek yang mengelola kumpulan karakter Unicode (lihat spesifikasi cluster kelas NSString untuk informasi tentang Unicode). Metode primitif utama NSCharacterSet characterIsMember: menyediakan dasar untuk semua metode instan di antarmukanya. Subkelas NSCharacterSet hanya perlu mengimplementasikan metode ini, ditambah metode mutableCopyWithZone:, untuk mendapatkan perilaku yang benar. Untuk performa terbaik, subkelas juga harus mengganti representasi bitmap, jika tidak, panggil characterIsMember: untuk semua kemungkinan nilai Unicode.
NSCharacterSet “dijembatani bebas pulsa” dengan mitra Core Foundation-nya, CFCharacterSetRef. Lihat Bridging Bebas Pulsa untuk informasi lebih lanjut tentang bridging bebas pulsa. NSCharacterSet adalah “jembatan bebas pulsa” dengan mitra basis intinya CFCharacterSetRef. Untuk informasi lebih lanjut tentang jembatan bebas pulsa, lihat jembatan bebas pulsa.
NSCharacterSet dapat memproses string dengan mudah
Misalnya, tentukan apakah suatu string dimulai dengan angka
NSString * string = "3dfdfsa";
unichar c = [string characterAtIndex:0];
if ([[NSCharacterSet decimalDigitCharacterSet] characterIsMember:c]) {
return YES;
} else {
return NO;
}
}
Dua metode di NSString terkait dengan NSCharacterSet: //Bersihkan karakter di kedua ujung string sesuai dengan kumpulan karakter
- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set; //Pisahkan string sesuai dengan pemisah kumpulan karakter
- (NSArray<NSString *> *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)pemisah;
NSString *string = @“123abc123”;
string = [string stringByTrimmingCharactersInSet:[NSCharacterSet desimalDigitCharacterSet]];
NSLog(@“%@”,string);//Keluaran abc
//字符集的二进制数据,用于传输、归档、保存成文件
@property (readonly, copy) NSData *bitmapRepresentation;
//一个除了数字字符之外的所有字符的字符集
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]
//判断aCharacter是否包含在字符集中
- (BOOL)characterIsMember:(unichar)aCharacter;
//功能貌似是一样的,入参是UTF-32的字符???不知道这两个方法的区别,知道的朋友不吝赐教
- (BOOL)longCharacterIsMember:(UTF32Char)theLongChar;
//判断theOtherSet是不是自身的子集
- (BOOL)isSupersetOfSet:(NSCharacterSet *)theOtherSet;
- (BOOL)hasMemberInPlane:(uint8_t)thePlane;
Menyandikan string:
NSString * string = @"11 =Essential ,Coding Interview Questions + Coding Exercises!" ;
[string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]];
alphanumericCharacterSet Semua angka dan huruf (tidak peka huruf besar-kecil)
Hasil setelah pengkodean adalah:
11%20%3DEssential%20%2CCoding%20Interview%20Questions%20%2B%20Coding%20Exercises%21
Anda dapat melihat bahwa hasil di atas mengkodekan semua karakter kecuali semua angka dan huruf.
Kemudian lihat fungsi invertedSet
[string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet].invertedSet]
Hasil setelah menambahkan invertedSet adalah sebagai berikut:
%31%31 =%45%73%73%65%6E%74%69%61%6C ,%43%6F%64%69%6E%67 %49%6E%74%65%72%76%69%65%77 %51%75%65%73%74%69%6F%6E%73 + %43%6F%64%69%6E%67 %45%78%65%72%63%69%73%65%73!
Anda dapat melihat bahwa hanya angka dan huruf yang dikodekan.
Dengan kata lain, NSCharacterSet dapat dengan mudah menentukan karakter apa yang akan dikodekan. Dimungkinkan juga untuk menggunakan characterSetWithCharactersInString untuk karakter yang dikodekan sepenuhnya secara khusus
NSCharacterSet *dd = [NSCharacterSet characterSetWithCharactersInString@"^~_>+=\"#%/<>?@\\^`{|}"];
```Blog terkait: https://nshipster.cn/nscharacterset/
#### API yang umum digunakan
/** Kumpulan metode pintasan yang umum digunakan (umum digunakan, memenuhi sebagian besar kebutuhan) */
(NSCharacterSet *)controlCharacterSet; // Karakter kontrol, termasuk karakter baris baru (\n), karakter tab (\t), dll. Tidak jelas apa karakter tersebut.
(NSCharacterSet *)whitespaceCharacterSet; //ruang
(NSCharacterSet *)whitespaceAndNewlineCharacterSet;//Spasi dan baris baru
(NSCharacterSet *)desimalDigitCharacterSet; //Angka dari 0-9
(NSCharacterSet *)letterCharacterSet; //Semua huruf
(NSCharacterSet *)huruf kecilLetterCharacterSet; //huruf kecil
(NSCharacterSet *)uppercaseLetterCharacterSet; //huruf besar
(NSCharacterSet *)nonBaseCharacterSet; //Non-basis
(NSCharacterSet *)alphanumericCharacterSet; //Semua angka dan huruf (huruf besar dan kecil)
(NSCharacterSet *)DecomposableCharacterSet; //Dapat terurai
(NSCharacterSet *)IlegalCharacterSet; //Ilegal
(NSCharacterSet *)punctuationCharacterSet; //Tanda baca mengacu pada simbol yang digunakan untuk memisahkan teks
(NSCharacterSet *) dengan huruf kapitalLetterCharacterSet; //Dikapitalisasi
(NSCharacterSet *)symbolCharacterSet; // Karakter simbol, kecuali tanda baca, seperti simbol seperti ¥ dan $
(NSCharacterSet *)newlineCharacterSet NS_AVAILABLE(10_5, 2_0);//Karakter baris baru
/** Mendapatkan objek NSCharacterSet berdasarkan string tertentu */
+ (NSCharacterSet *)characterSetWithCharactersInString:(NSString *)aString;
/** Batasan string yang berlawanan [lihat contoh berikut untuk detailnya] */
@property (hanya baca, salin) NSCharacterSet *invertedSet;
- karakterIsMember:
Fungsi NSCharacterSet agak mirip dengan reguler
:
https://nshipster.cn/nscharacterset/
NSString dan Unicode:
https://objccn.io/issue-9-1/#peculiar-unicode-features
Blog bahasa Inggris iOS: https://nshipster.com/
Versi Cina yang sesuai di atas: https://nshipster.cn/
Jika Anda bingung tentang apa itu pengkodean karakter (walaupun Anda memiliki pengetahuan profesional yang baik), Anda harus memanfaatkan kesempatan ini untuk membaca dan membaca kembali artikel klasik karya Joel Spolsky ini: https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
## Bagikan
1. Pertama, bagikan situs web tempat Anda dapat memeriksa perpustakaan pihak ketiga mana yang digunakan oleh aplikasi dengan unduhan besar atau aplikasi populer di App Store: https://www.appsight.io
2. Izinkan saya membagikan beberapa situs web algoritma pembelajaran lagi, ada yang berupa situs video, dan ada pula yang berisi animasi:
* Video algoritma seorang pria India, sekaligus belajar algoritma bahasa Inggris: https://www.youtube.com/channel/UCx-kFfzekMbhODaBss-ZnsA
* Tutorial algoritma: https://notes.diguage.com/mysql/#_%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6
* Algoritma grafis: https://visualgo.net/zh
*
* Animasi ini dapat membantu Anda memahami algoritma: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
* Penjelasan animasi algoritma yang umum digunakan: https://www.toptal.com/developers/sorting-algorithms
*Animasi ini juga bagus, keren sekali: http://sorting.at/
3. Rekomendasikan kursus database lain: https://15445.courses.cs.cmu.edu/fall2017/schedule.html
What to read next
Want more posts about ARTS?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home