Dodawanie niespodzianki
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 55 z 78.
Wyzwanie
ŁatwyW poprzedniej lekcji utworzyłeś program FizzBuzz, który przechodzi przez liczby, używając domyślnych dzielników 3 i 5. Teraz dodaj urozmaicenie: umożliwiaj dostosowywanie dzielników za pomocą parametrów domyślnych.
Zmodyfikuj swoją funkcję fizzbuzz, aby przyjmowała trzy argumenty:
n— liczba do sprawdzenia (wymagany)fizz_divisor— dzielnik dla "Fizz" (opcjonalny, domyślnie3)buzz_divisor— dzielnik dla "Buzz" (opcjonalny, domyślnie5)
Funkcja powinna używać tych niestandardowych dzielników zamiast wartości wpisanych na stałe podczas sprawdzania podzielności.
Otrzymasz trzy wiersze danych wejściowych:
- Górny limit
n - Dzielnik fizz
- Dzielnik buzz
Wykonaj pętlę od 1 do n i wywołaj zaktualizowaną funkcję fizzbuzz ze wszystkimi trzema argumentami. Wypisz każdy wynik.
Na przykład, jeśli dane wejściowe to:
10
2
3Wynik powinien być następujący:
[1] "1"
[1] "Fizz"
[1] "Buzz"
[1] "Fizz"
[1] "5"
[1] "FizzBuzz"
[1] "7"
[1] "Fizz"
[1] "Buzz"
[1] "Fizz"Jeśli dane wejściowe to:
15
3
5Wynik powinien być następujący:
[1] "1"
[1] "2"
[1] "Fizz"
[1] "4"
[1] "Buzz"
[1] "Fizz"
[1] "7"
[1] "8"
[1] "Fizz"
[1] "Buzz"
[1] "11"
[1] "Fizz"
[1] "13"
[1] "14"
[1] "FizzBuzz"Spróbuj swoich sił
# Read input
con <- file("stdin", "r")
n <- as.numeric(suppressWarnings(readLines(con, n = 1)))
# Function from previous lesson
check_divisible <- function(number, divisor) {
return(number %% divisor == 0)
}
# Create the fizzbuzz function
fizzbuzz <- function(n) {
if (check_divisible(n, 3) && check_divisible(n, 5)) {
return("FizzBuzz")
} else if (check_divisible(n, 3)) {
return("Fizz")
} else if (check_divisible(n, 5)) {
return("Buzz")
} else {
return(as.character(n))
}
}
# Loop through numbers from 1 to n and print the result
for (i in 1:n) {
print(fizzbuzz(i))
}Wszystkie lekcje w sekcji Podstawy
4Operatory, część 2
Operatory logiczne (AND, OR)Operatory logiczne, część 2 (NOT)Powtórka — prosta logikaLogika wektoryzowana, część 1Logika wektoryzowana, część 27Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika10FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz2Zmienne i typy danych
Liczbowy typ danychCałkowity typ danychZnakowy typ danychLogiczny typ danychSprawdzanie typów danychKonwencje nazewnictwaBrakujące wartości: NAPodsumowanie – tworzenie zmiennych8Pętle
Pętla forPętla whilePrzerwijNastępna iteracja (continue)Powtórka — silniaGenerowanie sekwencji (seq, :)Pętle zagnieżdżonePowtórka — dynamiczne wprowadzanie danych3Operatory, część 1
Operatory arytmetyczneDzielenie całkowite i moduloOperatory przypisaniaPowtórka — prosta matematykaOperatory porównania6Podstawowe wejście/wyjście
Wyświetlanie danychCat jako wyjścieWyjście z użyciem zmiennychOdczyt danych wejściowych za pomocą readline()Podstawy konwersji typówPowtórka — kalkulator wiekuPowtórka — prawda czy fałsz9Funkcje
Deklarowanie funkcjiArgumenty funkcjiWartości zwracanePowtórzenie — funkcja SigmaPowtórzenie — funkcja walidującaDomyślne wartości parametrówPoćwicz samodzielnie: Kompilator R online