Đá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 Codewars

Cá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!

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.

Codewars đáp án result

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

Codewars đáp án result

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

Codewars đáp án result Codewars đáp án result

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

Codewars đáp án result

Đáp án khác

Codewars đáp án result

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

Codewars đáp án result

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

Codewars đáp án result

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.

Codewars đáp án result

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

Codewars đáp án result

Dùng substr_count

Codewars đáp án result

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

Codewars đáp án result

Javascript: dùng charAt

Codewars đáp án result

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

Codewars đáp án result

C:

Codewars đáp án result

Đáp án khác:

Codewars đáp án result

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

Codewars đáp án result

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.

Codewars đáp án result

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.

Codewars đáp án result

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

Codewars đáp án result

PHP: Dùng substr

Codewars đáp án result

Java:

Codewars đáp án result

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 đủ

Codewars đáp án result

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

Codewars đáp án result

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#

Codewars đáp án result

Python

Codewars đáp án result

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

Codewars đáp án result

Cách ngắn hơn

Codewars đáp án result

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

Codewars đáp án result

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

Codewars đáp án result

Đáp án khác:

Codewars đáp án result

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.

Codewars đáp án result Codewars đáp án result