Đáp án Codewars Kyu 7
Level bắt buộc phải có của sinh viên năm cuối khi chơi CodewarsCác bài tập trong Level 8 và 7 chủ yếu là sử dụng các hàm và các phép tính. Làm thuần thục cái bài ở 2 level này, các bạn đã sử dụng thuần thục ngôn ngữ lập trình đó
Đáp án Codewars Kyu 7
- Don’t give me five!
- Growth of a Population
- Vowel Count
- Speed Control
- Get the Middle Character
- Simple Fun #2: Circle of Numbers
- My Languages
Don’t give me five!
Cho số đầu và số cuối là integer.
Số đầu cộng 1, tăng dần đến số cuối.
Hãy bỏ tất cả số có số 5 trong đó và return số lượng phần tử.
Ví dụ: Từ 4 đến 17 -> Bỏ số 5 và 15 đi -> 4 6 7 8 9 10 11 12 13 14 16 17 -> return 12
Đáp án
PHP: dùng hàm strpos để kiểm tra có số 5 trong từng phần tử không.

C: Logic của Kawaiicode
Số -10, -5, 5, 15, 25. 35... đều chia hết có 5 -> i % 5 = 0
Nhưng số -20, -10, 10, 20, 30 cũng chia hết cho 5 -> i % 10 = 5 || i % 10 = -5
Số 50, 51,52,53... 58, 59 có số 5 ở đầu. -> i >= 50 && i <= 59
Tương tự, 150 đến 159, 250 đến 259 nếu đề bài cho dãy số dài.
Các trường hợp trên, count không thay đổi. Còn lại count++

Đáp án khác: dùng string


C#: tương tự như C, nhớ thêm using System để dùng thư viện Console.Write đề phòng cần debug

Đáp án khác

Growth of a Population (Gia tăng dân số)
Cho 4 tham số:
p0 là số dân ban đầu
percent là tỉ lệ dân số tăng hàng năm
aug là số dân nhập cư
p là kết quả cuối cùng.
Ví dụ: số dân ban đầu là 1000, mỗi năm tăng 2% và nhập cư 50 người. Vậy sau bao nhiêu năm, dân số đạt mức 1200? Đáp án là 3 năm.
Đáp án
PHP: Sử dụng hàm floor() làm tròn số từ kiểu float thành kiểu integer

Javascript: sử dụng hàm Math.floor làm tròn số từ kiểu float thành kiểu integer

Java: sang Java, bạn phải quan tâm đến kiểu dữ liệu. PHP và Javascript thì không cần.
p0 và p dùng int. Nhưng phép toán sẽ làm kiểu dữ liệu chuyển thành float.
sử dụng hàm làm tròn số từ kiểu float thành kiểu integer
Thực ra không cần làm tròn số thì bài này cũng đã hoàn thành. Tuy nhiên, các bạn nên sử dụng 3 hàm làm tròn số để làm quen, ghi nhớ các hàm này.

Vowel Count (Đếm nguyên âm)
Nguyên âm là a,e,i,o,u
Cho 1 chuỗi, đếm số lượng chữ cái nguyên âm trong chuỗi đó.
Đáp án
PHP: dùng explode chuyển chuỗi thành mảng. Đếm số phần tử trong mảng – 1

Dùng substr_count

Dùng preg_match_all, tương tự str.match của Javascript

Javascript: dùng charAt

Dùng str.match, tương tự preg_match_all của PHP

C:

Đáp án khác:

Java: Java giống JavaScript. Copy vào rồi thay var bằng int, them () cho length.

Speed Control
s là số giây.
x là 1 mảng chứa quãng đường đi được mỗi s giây.
Ví dụ: mảng x có x = [0.0, 0.19, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25]
Nghĩa là cứ 15 giây, x chạy tới vị trí đó.
0.0-0.19, 0.19-0.5, 0.5-0.75, 0.75-1.0, 1.0-1.25, 1.25-1.50, 1.5-1.75, 1.75-2.0, 2.0-2.25
Vậy gia tốc u là [45.6, 74.4, 60.0, 60.0, 60.0, 60.0, 60.0, 60.0, 60.0]
Chọn giá trị lớn nhất của u, làm tròn số thành integer rồi trả về giá trị đó.
Đáp án
PHP: tạo mảng speed chứa các tốc độ mỗi s giây.
Lấy tốc độ sau trừ tốc độ trước bằng gia tốc u. Tìm max value rồi làm tròn thành integer.

Java: IntStream range(int startInclusive, int endExclusive) trả về thứ tự từ startInclusive đến endExclusive.
range() là hàm trong thư viện stream.
range(10) -> 0 1 2 3 4 5 6 7 8 9
range(5,10) -> 5 6 7 8 9
range(0, x.length - 1) để lấy tất cả các giá trị trong mảng x[]
mapToDouble() là vòng lặp trả về các kết quả có kiểu dữ liệu là double.
Vòng lặp tương tự như foreach với các giá trị lấy từ range() trước đó, được đặt biến i.
Mỗi i là một vòng lặp.
max() lấy ra giá trị lớn nhất trong khi tính ra hết các kết quả.
orElse() không lấy ra được thì lấy kết quả là 0.0 trong trường hợp chỉ có một tốc độ duy nhất thì gia tốc bằng 0.
Math.floor() làm tròn giá trị double thành int.

Get the Middle Character
Lấy ký tự ở chính giữa chuỗi.
Nếu số ký tự là số lẻ -> lấy 1 ký tự.
Nếu số ký tự là số chẵn -> lấy 2 ký tự.
Lưu ý: vị trí ký tự được tính bắt đầu từ 0
Đáp án
Javascript: dùng charAt, vị trí ký tự được tính bắt đầu từ 0

PHP: Dùng substr

Java:

Simple Fun #2: Circle of Numbers
Hãy tìm số đối diện trong vòng tròn bắt đầu từ 0
PHP: Cách dài dòng nhưng giải thích đầy đủ

Javascript: 1 phép tính duy nhất

Và từ logic 1 phép tính duy nhất đó, hãy viết bằng tất cả các ngôn ngữ còn lại.
C#

Python

My Languages
Cho 1 object bao gồm key và value.
Lấy các value >= 60 và value giảm dần để từ đó xuất ra mảng các key tương ứng.
Ví dụ: {"Java" : 10, "Ruby" : 80, "Python" : 65}
Kết quả: ["Ruby", "Python"]
Điểm Ruby cao hơn Python
Đáp án
Javascript
Bước 1: tạo mảng arrValue chứa tất cả value, tức là số điểm. Sau đó sắp xếp giảm dần.
Bước 2: tạo mảng arrResult chứa tất cả value >= 60
Bước 3: tạo mảng arrFinal chứa các key ứng với value trong arrResult.
Value 65 thì key là Python
Value 80 thì key là Ruby

Cách ngắn hơn

JavaScript Array Filter
Mảng JavaScript hỗ trợ chức năng lọc (bắt đầu từ JavaScript 1.6). Sử dụng chức năng lọc để hoàn thành chức năng đã cho.
Hãy tìm số lẻ trong mảng [ 2, 3, 6, 8, 10 ]
Javascript: Hàm array.filter(chức năng) của JavaScript cho sẵn. Tìm hiểu thêm: Mozilla Developer

Get list sum recursively
Cộng tất cả các phần tử trong mảng. n là số phần tử
Đáp án
C: vì có số phần tử là n rồi nên không cần tạo vòng lặp để đếm số phần tử.

Đáp án khác:

Calculate average
Tính trung bình cộng
Đáp án
C: Khi làm các bài tập về ngôn ngữ C, nó sẽ cho độ dài mảng. Các ngôn ngữ khác phải tự kiếm độ dài mảng.
Convert a String to a Number!
Chuyển dạng chuỗi thành dạng số. Số là kiểu float hoặc double để đề phòng số âm, số thập phân...
Đáp án
C:
Gọi thư viện stdlib.h rồi dùng
atoi() convert string to integer
atof() convert string to float
Ngoài ra còn có long, long integer...
Convert a Number to a String!
Chuyển dạng số thành dạng chuỗi.
Đáp án
JavaScript: toString()
Maximum product
Cho mảng các số nguyên. Tìm tổng lớn nhất của 2 số đứng kế nhau trong mảng.
Đáp án
Java
Đáp án khác
Countries Capitals for Trivia Night (SQL for Beginners #6)
Lấy tên các thủ đô của các đất nước ở châu Phi bắt đầu bằng chữ E. Ví dụ: Ethiopia, Egypt...
Tuy nhiên, một số dòng lại viết sai Africa thành Afrika
Chỉ được lấy 3 giá trị. Quá 3 giá trị là sai
Simple JOIN SQL
Trả về tất cả cột trong bảng products và join với bảng companies
Simple Fun #74: Growing Plant
Cây phát triển
Buổi sáng là up_speed = 100
Buổi tối là down_speed = 10
1 ngày là 100 – 10 = 90
Sáng hôm sau, up_speed = 100 + 90 = 190
Tối: 190 – 10 = 180
Hôm sau: 100 + 180 = 280
Lặp như thế đến khi kết quả >= desired_height
Tính ra số ngày
SQL with Street Fighter: Total Wins
Tìm người chiến thắng bằng cách tính tổng số trận thắng và thua. Tuy nhiên, những trận đấu Hadoken, Shouoken và Kikoken không được tính vào số trận thắng
Maximum Multiple
divisor là số bắt đầu
bound là số kết thúc
Tìm số chia hết cho divisor, nằm trong phạm vi từ divisor đến bound và là số lớn nhất.
Ví dụ:
divisor = 2
bound = 7
Kết quả là 6 vì 6 chia hết cho 2 và 6 lớn nhất.
GROCERY STORE Support Local Products
products table schema
id
name
price
stock
producer
country
results table schema
products
country
Bạn là chủ của cửa hàng Grocery.
Bạn muốn tìm xem có bao nhiêu sản phẩm đến từ "United States of America" và
Sử dụng SELECT và IN
Kết quả thể hiện bao nhiêu sản phẩm đến từ "United States of America" và "Canada"
Sắp xếp theo số lượng sản phẩm giảm dần.

