Build tower codewars python

Русские Блоги

Введите третий день codewars -Строить кучу кубов, Преобразовать логические значения в строки «Да» или «Нет», Построить Башню

Your task is to construct a building which will be a pile of n cubes. The cube at the bottom will have a volume of n^3, the cube above will have volume of (n-1)^3 and so on until the top which will have a volume of 1^3.

You are given the total volume m of the building. Being given m can you find the number n of cubes you will have to build?

The parameter of the function findNb (find_nb, find-nb, findNb) will be an integer m and you have to return the integer n such as n^3 + (n-1)^3 + . + 1^3 = m if such a n exists or -1 if there is no such n.

Проще говоря, значение: например, findNb (1071225) -> 45

Нужно найти число n в 1-1071225 такое, что n ^ 3 + (n-1) ^ 3 + . + 1 ^ 3 = 1071225

В начале я написал две петли для и обнаружил, что скорость очень низкая

Позже обратитесь к другим

Обнаружил, что вы можете использовать цикл while

Код выглядит следующим образом:

def find_nb(m): mm=0 n=0 while mm

Это обход. Я не думал о том, чтобы сделать объезд раньше.

Столкнулся с супер простым вопросом:

Это означает, что если вы вводите True, он выводит Yes, а если вы вводите False, выдает No.

Без дальнейших церемоний, перейдите непосредственно к картинке выше:

def bool_to_word(boolean): if boolean == True: return 'Yes' if boolean == False: return 'No'

Build Tower Build Tower by the following given argument: number of floors (integer and always greater than 0). Tower block is represented as * Python: return a list; JavaScript: returns an Array; C#: returns a string[]; PHP: returns an array; C++: returns a vector; Haskell: returns a [String]; Ruby: returns an Array; Have fun! for example, a tower of 3 floors looks like below [ ' * ', ' *** ', '*****' ] and a tower of 6 floors looks like below [ ' * ', ' *** ', ' ***** ', ' ******* ', ' ********* ', '***********' ] Go challenge Build Tower Advanced once you have finished this :) FUNDAMENTALSSTRINGSBASIC LANGUAGE FEATURES

Образец вывода выходной пирамиды входного слоя выглядит следующим образом:

Соблюдайте вывод, чтобы знать: если задано число 3

Первый слой - это два пробела слева от «*», два пробела справа от «*» и *

Второй слой - это пробел слева от «*», справа - три *

Наблюдайте количество пробелов, чтобы найти правило:

Общее количество слоев n_floors, количество контрольных переменных i, количество контрольных переменных j

Количество слоев: 0 Количество пробелов: 2-j изменяется от (i, n_floors-1), количество пробелов равно 0, 1, 2

Количество этажей: 1 Количество мест: 1

Количество этажей: 2 Количество мест: 0

Общее количество слоев n_floors, количество управляющих переменных i, количество управляющих переменных k

Количество слоев: 0 * Число: 1-k изменяется от (0,2 * i + 1), * число

Количество этажей: 1 * Количество: 3

Количество этажей: 2 * Количество: 5

Итак, код выглядит следующим образом:

def tower_builder(n_floors): lst=[] for i in range(0,n_floors): str1='' str2='' for j in range(i,n_floors-1): str1=str1+' ' for k in range(0,2*i+1): str2=str2+'*' lst.append(str1+str2+str1) return lst

Источник

[Codewars #19] Build Tower (6kyu)

karais89

The prime numbers are not regularly spaced. For example from 2 to 3 the step is 1. From 3 to 5 the step is 2. From 7 to 11 it is 4. Between 2 and 50 we have the following pairs of 2-steps primes:

3, 5 - 5, 7, - 11, 13, - 17, 19, - 29, 31, - 41, 43 

We will write a function step with parameters:

  • g (integer >= 2) which indicates the step we are looking for,
  • m (integer >= 2) which gives the start of the search (m inclusive),
  • n (integer >= m) which gives the end of the search (n inclusive)

In the example above step(2, 2, 50) will return [3, 5] which is the first pair between 2 and 50 with a 2-steps.

So this function should return the first pair of the two prime numbers spaced with a step of g between the limits m, n if these g-steps prime numbers exist otherwise nil or null or None or Nothing or [] or "0, 0" or (depending on the language).

step(2, 5, 7) --> [5, 7] or (5, 7) or or "5 7" step(2, 5, 5) --> nil or . or [] in Ocaml or in C++ step(4, 130, 200) --> [163, 167] or (163, 167) or 

See more examples for your language in "RUN" Remarks: ( [193, 197] is also such a 2-steps primes between 130 and 200 but it's not the first pair).

step(6, 100, 110) --> [101, 107] though there is a prime between 101 and 107 which is 103; the pair 101-103 is a 2-step.

Notes: The idea of "step" is close to that of "gap" but it is not exactly the same. For those interested they can have a look at http://mathworld.wolfram.com/PrimeGaps.html.

A "gap" is more restrictive: there must be no primes in between (101-107 is a "step" but not a "gap". Next kata will be about "gaps":-).

For Go: nil slice is expected when there are no step between m and n. Example: step(2,4900,4919) --> nil

Poweredby qualified Solution:

using System; using NUnit.Framework;

[TestFixture] public static class StepInPrimesTests [Test] public static void test1()

My Solution​

using System; using System.Text; public class Kata   public static string[] TowerBuilder(int nFloors)   string[] towers = new string[nFloors]; int totalCnt = nFloors * 2 - 1; for (int i = 0; i  nFloors; i++)   int spaceCnt = (nFloors - 1 - i) * 2; int starCnt = totalCnt - spaceCnt;  towers[i] = MakeTowerStr(spaceCnt, starCnt); > return towers; > private static string MakeTowerStr(int spaceCnt, int starCnt)   int halfSpaceCnt = spaceCnt / 2; StringBuilder sb = new StringBuilder(); // before space for (int i = 0; i  halfSpaceCnt; i++)   sb.Append(" "); > // star for (int i = 0; i  starCnt; i++)   sb.Append("*"); > // after space for (int i = 0; i  halfSpaceCnt; i++)   sb.Append(" "); > return sb.ToString(); > > 

Best Practices​

public class Kata   public static string[] TowerBuilder(int nFloors)   var result = new string[nFloors]; for(int i=0;inFloors;i++)  result[i] = string.Concat(new string(' ',nFloors - i - 1), new string('*',i * 2 + 1), new string(' ',nFloors - i - 1)); return result; > > 

Concat 및 new String의 2번째 인자를 사용하여 깔끔하게 풀었다. String 2번째 인자가 반복할 개수를 받을 수 있는걸 몰라서 괜히 어렵게 풀었다. 문제를 풀때 msdn 한번씩 뒤져보는것도 좋을 수 있겠다.

// Create a string that consists of a character repeated 20 times. string string2 = new string('c', 20); 

Источник

Читайте также:  Кому нужны программисты java
Оцените статью