Oversigt over Python opgaver på Exercism.io - STU-IT/raspi17 GitHub Wiki

Opgaver

Hello World

Den klassiske opstarts øvelse. Bare sig "Hello, World!"

Funktionen hello i hello_world.py skal returnere "Hello, World!"
http://exercism.io/exercises/python/hello-world

Leap

Ud fra et givet år, afgør om det er skudår.

Det vanskellige ved skudår er det optræder næsten hvert 4. år. Som i:

hver gang et år kan divideres lige med 4 
  undtagen hvis året også er deleligt med 100
    med mindre året også er deleligt med 400

For eksempel er 1997 ikke skudår, men 1996 er. 1900 er ikke skudår, mens 2000 er.

Undgår at bruge lib/moduler til python med kalender som kan beregne skudår for dig. Lav det selv.

Du lærer at arbejde med:

Isogram

Afgør om et ord eller en tekst er et isogram. Et isogram (også kendt som et "nonpattern word") er et ord eller en sætning uden at nogen tegn findes mere en én gang. Eksempler på isogrammer:

  • lumberjacks
  • background
  • downstream Ordet isograms , men er ikke et isogram, fordi s gentages.

Læringsmål

Pangram

Bestem, om en sætning er en pangram. En pangram (græsk: παν γράμμα, pan gramma, "hvert bogstav") er en sætning, der bruger hvert bogstav i alfabetet mindst én gang. Den bedst kendte engelske pangram er:

The quick brown fox jumps over the lazy dog. Det anvendte alfabet består af ASCII tegn a til z inklusive, og er både store og små bogstaver. Input vil ikke indeholde ikke-ASCII-symboler.

Læringsmål

  • loop
  • set (mængde)
  • upper/lower-case
  • if/else

http://exercism.io/exercises/python/pangram

Rna Transkription

Given a DNA strand, return its RNA complement (per RNA transcription). Ud fra en DNA-streng, skal funktionen returnere den tilsvarende RNA-streng. Både DNA- og RNA-tråde er en sekvens af nukleotider.

De fire nukleotider, der findes i DNA, er adenin ( A ), cytosin ( C ), guanin ( G ) og thymin ( T ).

De fire nukleotider, der findes i RNA, er adenin ( A ), cytosin ( C ), guanin ( G ) og uracil ( U ).

På grund af en DNA-streng dannes dets transkriberede RNA-streng ved at erstatte hvert nukleotid med dets komplement:

  • G -> C
  • C -> G
  • T -> A
  • A -> U

Læringsmål

  • loop
  • if/elif/else

http://exercism.io/exercises/python/rna-transcription

Hamming

Calculate the Hamming difference between two DNA strands. Beregn Hammingforskellen mellem to DNA-tråde.

En mutation er simpelthen en fejl, der opstår under dannelsen eller kopien af ​​en nukleinsyre, især DNA. Fordi nukleinsyrer er afgørende for cellulære funktioner, har mutationer tendens til at forårsage en krusningsvirkning i hele cellen. Selvom mutationer er tekniske fejl, kan en meget sjælden mutation udstyre cellen med en gavnlig egenskab. Faktisk er de makroeffekter af evolution der kan tilskrives af det akkumulerede resultat af gavnlige mikroskopiske mutationer over mange generationer.

Den enkleste og mest almindelige type nukleinsyremutation er en punktmutation, som erstatter en base med en anden ved et enkelt nukleotid.

Ved at tælle antallet af forskelle mellem to homologe DNA-strenge taget fra forskellige genomer med en fælles forfader, får vi en måling af det minimale antal punktmutationer, der kunne have fundet sted på den evolutionære vej mellem de to tråde.

Dette kaldes 'Hamming afstanden'.

Det findes ved at sammenligne to DNA-tråde og tælle hvor mange af nukleotiderne der er forskellige fra deres ækvivalente i den anden streng.

 GAGCCTACTAACGGGAT 
 CATCGTAATGACGGCCT 
 ^ ^ ^  ^ ^    ^^ 

Hammingafstanden mellem disse to DNA-tråde er 7.

Udførelsesnote:

Hammings afstanden er kun defineret for sekvenser med ens længde. Det betyder, at hvert sprog på baggrund af definitionen kan håndtere at få sekvenser af samme længde forskelligt.

Læringsmål

Word Count

Given a phrase, count the occurrences of each word in that phrase. Tæl forekomsten af hvert ord i en sætning.
F.eks. med denne sætning "olly olly in come free"

olly: 2
in: 1
come: 1
free: 1

Læringsmål

  • loop
  • dict (Dictionary, en slag assosiativt-array)
  • upper/lower-case
  • if/else

http://exercism.io/exercises/python/word-count

Gigasecond

Calculate the moment when someone has lived for 10^9 seconds. Udregn det tidspunkt hver en har levet i 10^9 sekunder.
Et gigasekund er 10^9 (1.000.000.000 en miliard) sekunder.

Læringsmål

  • datetime objektet

Sørens Note

Jeg synes beskrivelsen her er noget kort og upræcis, derfor vil jeg anbefale også at læse testscriptet på (http://exercism.io/exercises/python/gigasecond/test-suite), selvom du måske ikke har fået undervisning i hvordan sådan et virker. Det er linjerne med self.assertEqual( og efterfølgende kald af add_gigasecond(...) og derefter de værdier der forventes at funktionen returnerer.

Se mere http://exercism.io/exercises/python/gigasecond

Bob

Bob er en mangelfulde teenager. I samtalen er hans svar meget begrænsede.

Bob svarer 'Sure'. hvis du spørger ham et spørgsmål.

Han svarer 'Whoa, chill out!' hvis du råber på ham.

Han siger 'Fine'. Be that way! " hvis du adresserer ham uden faktisk at sige noget.

Han svarer 'Whatever'. til noget andet.

Læringsmål

  • if/else
  • Streng behandling

http://exercism.io/exercises/python/bob

Run Length Encoding

Gennemfør kodning og afkodning af run-length encoding.

Run-length encoding(RLE) er en simpel form for datakomprimering, hvor kørsler (på hinanden følgende dataelementer) erstattes af kun en dataværdi og tælling.

For eksempel kan vi repræsentere de originale 53 tegn med kun 13.

  "WWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWWWWWWWWWWWWWWB" -> "12WB12W3B24WB" 

RLE gør det muligt at rekonstruere de originale data, eksakt, fra komprimerede data, hvilket gør det til en tabsfri datakomprimering.

  "AABCCCDEEEE" -> "2AB3CD4E" -> "AABCCCDEEEE" 

For at gøre opgaven enklere, kan du antage, at den ukrypterede streng kun indeholder bogstaverne A til Z (enten små eller store bogstaver) og mellemrum/linjeskift/tabs (whitespace). Denne tekst-streng, der skal indkodes, vil aldrig indeholde tal. Tal i enkodede data, der skal dekodes, repræsenterer altid antallet af følgende tegn.

Læringsmål

  • Streng behandling
  • loop

http://exercism.io/exercises/python/run-length-encoding

Meetup

Calculate the date of meetups.

Beregn datoen for møder.

Typisk møder opstår samme dag i ugen. I denne øvelse vil du tage en beskrivelse af en mødedato og returnere den aktuelle mødedato.

Eksempler på generelle beskrivelser er:

  • den første mandag i januar 2017
  • den tredje tirsdag i januar 2017
  • den onsdagste januar 2017
  • den sidste torsdag i januar 2017

Note that "Monteenth", "Tuesteenth", etc are all made up words. There was a meetup whose members realized that there are exactly 7 numbered days in a month that end in '-teenth'. Therefore, one is guaranteed that each day of the week (Monday, Tuesday, ...) will have exactly one date that is named with '-teenth' in every month.

Given examples of a meetup dates, each containing a month, day, year, and descriptor (first, second, teenth, etc), calculate the date of the actual meetup. For example, if given "First Monday of January 2017", the correct meetup date is 2017/1/2

__ Bemærk at "Monteenth", "Tuesteenth", osv. Er alle sammensatte ord. Der var et møde, hvis medlemmer indså, at der er nøjagtigt 7 nummererede dage i en måned, der slutter i '-tende'. Derfor er man garanteret, at hver dag i ugen (mandag, tirsdag, ...) vil have nøjagtig en dato, der hedder '-tende' i hver måned.

På grund af eksempler på en mødelokalisering, der hver indeholder en måned, dag, år og deskriptor (første, anden, tiende osv.), Beregnes datoen for den faktiske møde. For eksempel, hvis den er givet "Første mandag i januar 2017", er den korrekte mødedato 2017/1/2 __

Se mere http://exercism.io/exercises/python/meetup

Rotational Cipher

Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.

Opret en implementering af rotations-krypering, også nogle gange kaldet Caesar-krypteringen.

Cæsar-kryptering er et simpelt ciffer-skift, der er baseret på transponering af alle bogstaverne i alfabetet ved hjælp af en heltalsnøgle mellem 0 og 26 . Brug af en nøgle på 0 eller 26 vil altid give samme output på grund af modulær aritmetik. Brevet skiftes for så mange værdier som værdien af ​​nøglen.

Den generelle notation for roterende cifre er ROT + . Den mest almindelige rotationschiffer er ROT13 .

Ceaesar cipher with ROT13

En ROT13 på det latinske alfabet ville være som følger:

  klartekst:  abcdefghijklmnopqrstuvwxyz 
  krypttekst: nopqrstuvwxyzabcdefghijklm 

Det er stærkere end Atbash-krypteringen, fordi det har 27 mulige nøgler og 25 brugbare nøgler.

Ciphertext udskrives i samme formatering som input inklusive mellemrum og tegnsætning.

Eksempler

ROT5 omg giver trl ROT0 c giver c ROT26 Cool giver Cool ROT13 The quick brown fox jumps over the lazy dog. giver Gur dhvpx oebja sbk whzcf bire gur ynml qbt. ROT13 Gur dhvpx oebja sbk whzcf bire gur ynml qbt. giver The quick brown fox jumps over the lazy dog.

Læringsmål

  • Algebra
  • brug af ord() og char()
  • modulus og %
  • loop
  • strengbehandling

Se mere på http://exercism.io/exercises/python/rotational-cipher

Difference Of Squares

Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.

Anagram

Given a word and a list of possible anagrams, select the correct sublist.

Allergies

Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.

Series

Given a string of digits, output all the contiguous substrings of length n in that string.

Robot Simulator

Write a robot simulator.

Sieve

Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.

Atbash Cipher

Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.

Sum Of Multiples

Given a number, find the sum of all the multiples of particular numbers up to but not including that number.

Acronym

Convert a long phrase to its acronym

Say

Given a number from 0 to 999,999,999,999, spell out that number in English.

Largest Series Product

Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.

Kindergarten Garden

Given a diagram, determine which plants each child in the kindergarten class is responsible for.

Grade School

Given students' names along with the grade that they are in, create a roster for the school

Flatten Array

Take a nested list and return a single list with all values except nil/null

Roman Numerals

Write a function to convert from normal numbers to Roman Numerals.

Space Age

Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.

Grains

Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.

Luhn

Given a number determine whether or not it is valid per the Luhn formula.

Etl

We are going to do the Transform step of an Extract-Transform-Load.

Prime Factors

Compute the prime factors of a given natural number.

Pig Latin

Implement a program that translates from English to Pig Latin

Simple Cipher

Implement a simple shift cipher like Caesar and a more secure substitution cipher

Scrabble Score

Given a word, compute the scrabble score for that word.

Crypto Square

Implement the classic method for composing secret messages called a square code.

Sublist

Write a function to determine if a list is a sublist of another list.

Pythagorean Triplet

There exists exactly one Pythagorean triplet for which a + b + c = 1000. Find the product a * b * c.

Circular Buffer

A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.

Robot Name

Manage robot factory settings.

Matrix

Given a string representing a matrix of numbers, return the rows and columns of that matrix.

Rail Fence Cipher

Implement encoding and decoding for the rail fence cipher.

Nth Prime

Given a number n, determine what the nth prime is.

Saddle Points

Detect saddle points in a matrix.

Beer Song

Produce the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.

Perfect Numbers

Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for natural numbers.

Secret Handshake

Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.

Twelve Days

Output the lyrics to 'The Twelve Days of Christmas'

Palindrome Products

Detect palindrome products in a given range.

Bracket Push

Make sure the brackets and braces all match.

Minesweeper

Add the numbers to a minesweeper board

Queen Attack

Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other.

Wordy

Parse and evaluate simple math word problems returning the answer as an integer.

Phone Number

Clean up user-entered phone numbers so that they can be sent SMS messages.

Ocr Numbers

Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.

House

Output the nursery rhyme 'This is the House that Jack Built'.

Triangle

Determine if a triangle is equilateral, isosceles, or scalene.

Transpose

Take input text and output it transposed.

Poker

Pick the best hand(s) from a list of poker hands.

Zebra Puzzle

Solve the zebra puzzle.

Rectangles

Count the rectangles in an ASCII diagram.

Binary Search

Implement a binary search algorithm.

List Ops

Implement basic list operations

Book Store

To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.

Linked List

Implement a doubly linked list

Diamond

Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.

Variable Length Quantity

Implement variable length quantity encoding and decoding.

All Your Base

Convert a number, represented as a sequence of digits in one base, to any other base.

Clock

Implement a clock that handles times without dates.

Grep

Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.

Word Search

Create a program to solve a word search puzzle.

Alphametics

Write a function to solve alphametics puzzles.

Tournament

Tally the results of a small football competition.

Scale Generator

Generate musical scales, given a starting note and a set of intervals.

Protein Translation

Translate RNA sequences into proteins.

Change

Correctly determine change to be given using the least number of coins

Two Fer

Create a sentence of the form "One for X, one for me."

Collatz Conjecture

Calculate the number of steps to reach 1 using the Collatz conjecture

⚠️ **GitHub.com Fallback** ⚠️