[+] Add starter files
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
\documentclass[fontsize=11pt]{article}
|
||||
\usepackage{amsmath}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[margin=0.75in]{geometry}
|
||||
|
||||
\title{CSC110 Assignment 3: Loops, Mutation, and Applications}
|
||||
\author{TODO: FILL IN YOUR NAME HERE}
|
||||
\date{\today}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\section*{Part 1: Text generation, uniformly random model}
|
||||
|
||||
\begin{enumerate}
|
||||
|
||||
\item[1.]
|
||||
\begin{enumerate}
|
||||
\item[(a)]
|
||||
TODO: Complete the table below (you will need to add more rows).
|
||||
|
||||
You may find this tutorial useful: https://www.overleaf.com/learn/latex/Tables.
|
||||
|
||||
\begin{tabular}{|l|l|l|l|}
|
||||
\hline
|
||||
Iteration & \verb|word| & \verb|words| & \verb|word_frequencies|\\
|
||||
\hline
|
||||
0 & N/A & \texttt{[]} & \texttt{[]} \\
|
||||
1 & & & \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
|
||||
\item[(b)]
|
||||
TODO: Write your answer here.
|
||||
|
||||
\item[(c)]
|
||||
TODO: Write your answer here.
|
||||
\end{enumerate}
|
||||
|
||||
\item[2.]
|
||||
Complete this part in the provided \texttt{a3\_part1.py} starter file.
|
||||
Do \textbf{not} include your solution in this file.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\newpage
|
||||
|
||||
\section*{Part 2: Text generation, One-Word Context Model}
|
||||
|
||||
\begin{enumerate}
|
||||
|
||||
\item[0.]
|
||||
This question is not to be handed in.
|
||||
|
||||
\item[1.]
|
||||
One-word context model:
|
||||
|
||||
\begin{verbatim}
|
||||
# TODO: Write your one-word context model here as a Python value.
|
||||
# Write each key-value pair on a separate line, like on the assignment handout.
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
\item[2.]
|
||||
Complete this part in the provided \texttt{a3\_part2.py} starter file.
|
||||
Do \textbf{not} include your solution in this file.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\newpage
|
||||
|
||||
\section*{Part 3: Loops and Mutation Debugging Exercise}
|
||||
|
||||
\begin{enumerate}
|
||||
\item[1.]
|
||||
TODO: Write your answer here.
|
||||
|
||||
\item[2.]
|
||||
TODO: Write your answer here (and remember to edit a3\_part3.py as well).
|
||||
|
||||
\item[3.]
|
||||
TODO: Write your answer here.
|
||||
\end{enumerate}
|
||||
|
||||
\section*{Part 4: Forest Fires}
|
||||
|
||||
\begin{enumerate}
|
||||
\item[1.]
|
||||
Complete this part in the provided \texttt{a3\_part4.py} starter file.
|
||||
Do \textbf{not} include your solution in this file.
|
||||
|
||||
\item[2.]
|
||||
Complete this part in the provided \texttt{a3\_part4\_tests.py} starter file.
|
||||
Do \textbf{not} include your solution in this file.
|
||||
|
||||
\item[3.]
|
||||
|
||||
\begin{enumerate}
|
||||
\item[a.]
|
||||
TODO: Write your answer here.
|
||||
|
||||
\item [b.]
|
||||
TODO: Write your answer here.
|
||||
|
||||
\item[c.]
|
||||
TODO: Write your answer here.
|
||||
\end{enumerate}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,291 @@
|
||||
"""CSC110 Fall 2021 Assignment 3: Forest Fire Weather Index System
|
||||
|
||||
Copyright and Usage Information
|
||||
===============================
|
||||
|
||||
This file is provided solely for the personal and private use of students
|
||||
taking CSC110 at the University of Toronto St. George campus. All forms of
|
||||
distribution of this code, whether as given or with any changes, are
|
||||
expressly prohibited. For more information on copyright for CSC110 materials,
|
||||
please consult our Course Syllabus.
|
||||
|
||||
This file is Copyright (c) 2021 Mario Badr and Tom Fairgrieve.
|
||||
"""
|
||||
import math
|
||||
from dataclasses import dataclass
|
||||
|
||||
# Initial values that can be used for FFMC, DMC, and DC
|
||||
INITIAL_FFMC = 85.0
|
||||
INITIAL_DMC = 6.0
|
||||
INITIAL_DC = 15.0
|
||||
|
||||
# Per-month lookup tables
|
||||
DMC_DAY_LENGTH_EFFECTIVE = {
|
||||
1: 6.5, 2: 7.5, 3: 9.0, 4: 12.8, 5: 13.9, 6: 13.9,
|
||||
7: 12.4, 8: 10.9, 9: 9.4, 10: 8.0, 11: 7.0, 12: 6.0
|
||||
}
|
||||
DC_DAY_LENGTH_FACTORS = {
|
||||
1: -1.6, 2: -1.6, 3: -1.6, 4: 0.9, 5: 3.8, 6: 5.8,
|
||||
7: 6.4, 8: 5.0, 9: 2.4, 10: 0.4, 11: -1.6, 12: -1.6
|
||||
}
|
||||
|
||||
|
||||
@dataclass
|
||||
class WeatherMetrics:
|
||||
"""A bundle of metrics that are measured by weather stations.
|
||||
|
||||
Instance Attributes:
|
||||
- month: The month of the year (e.g., January is 1, December is 12)
|
||||
- day: the day of the month
|
||||
- temperature: The noon temperature in degrees Celsius
|
||||
- humidity: The noon relative humidity, in %
|
||||
- wind_speed: The noon wind speed, in km/h
|
||||
- precipitation: The rainfall at noon, in mm
|
||||
|
||||
Representation Invariants:
|
||||
- self.month in {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
|
||||
- self.humidity >= 0.0
|
||||
- self.wind_speed >= 0.0
|
||||
- self.precipitation >= 0.0
|
||||
"""
|
||||
month: int
|
||||
day: int
|
||||
temperature: float
|
||||
humidity: float
|
||||
wind_speed: float
|
||||
precipitation: float
|
||||
|
||||
|
||||
@dataclass
|
||||
class FfwiOutput:
|
||||
"""A bundle of the output metrics in the Canadian Forest Fire Weather Index System.
|
||||
|
||||
Instance Attributes:
|
||||
- ffmc: the Fine Fuel Moisture Code
|
||||
- dmc: the Duff Moisture Code
|
||||
- dc: the Drought Code
|
||||
- isi: the Initial Spread Index
|
||||
- bui: the Buildup Index
|
||||
- fwi: the Fire Weather Index
|
||||
|
||||
Representation Invariants:
|
||||
- 0.0 <= self.ffmc <= 101.0
|
||||
- self.dmc >= 1.0
|
||||
- self.bui >= 0.0
|
||||
"""
|
||||
ffmc: float
|
||||
dmc: float
|
||||
dc: float
|
||||
isi: float
|
||||
bui: float
|
||||
fwi: float
|
||||
|
||||
|
||||
def calculate_mr(precipitation: float, mo: float) -> float:
|
||||
"""Return the fine fuel moisture content after rain (mr) based on the effective
|
||||
rainfall in precipitation and the fine fuel moisture content from the previous day.
|
||||
|
||||
Preconditions:
|
||||
- precipitation > 0.5
|
||||
"""
|
||||
# Equation 2
|
||||
rf = precipitation - 0.5
|
||||
|
||||
if mo > 150.0:
|
||||
# Equation 3b
|
||||
mr = (mo + 42.5 * rf * math.exp(-100.0 / (251.0 - mo)) * (1.0 - math.exp(-6.93 / rf))) + (
|
||||
0.0015 * (mo - 150.0) ** 2) * math.sqrt(rf)
|
||||
else:
|
||||
# Equation 3a
|
||||
mr = mo + 42.5 * rf * math.exp(-100.0 / (251.0 - mo)) * (1.0 - math.exp(-6.93 / rf))
|
||||
|
||||
return mr
|
||||
|
||||
|
||||
def calculate_m(wm: WeatherMetrics, ed: float, mo: float) -> float:
|
||||
"""Return the fine fuel moisture content after drying (m) based on the measurements in wm, the
|
||||
EMC for drying in ed, and the fine fuel moisture content from the previous day in mo.
|
||||
|
||||
Preconditions:
|
||||
- mo <= 250.0
|
||||
"""
|
||||
if mo == ed:
|
||||
return mo
|
||||
|
||||
if mo < ed:
|
||||
# Equation 5
|
||||
ew = 0.618 * (wm.humidity ** .753) + (10.0 * math.exp((wm.humidity - 100.0) / 10.0)) \
|
||||
+ 0.18 * (21.1 - wm.temperature) * (1.0 - 1.0 / math.exp(0.115 * wm.humidity))
|
||||
|
||||
if mo <= ew:
|
||||
# Use log wetting rate
|
||||
# Equation 7a
|
||||
k1 = 0.424 * (1.0 - ((100.0 - wm.humidity) / 100.0) ** 1.7) + \
|
||||
(.0694 * math.sqrt(wm.wind_speed)) * (1.0 - ((100.0 - wm.humidity) / 100.0) ** 8)
|
||||
kw = k1 * (0.581 * math.exp(0.0365 * wm.temperature)) # Equation 7b
|
||||
return ew - (ew - mo) / 10.0 ** kw # Equation 9
|
||||
else:
|
||||
return mo
|
||||
|
||||
# Use log drying rate
|
||||
# Equation 6a
|
||||
k0 = 0.424 * (1.0 - (wm.humidity / 100.0) ** 1.7) + (
|
||||
(0.0694 * math.sqrt(wm.wind_speed)) * (1.0 - (wm.humidity / 100.0) ** 8))
|
||||
kd = k0 * (0.581 * math.exp(0.0365 * wm.temperature)) # Equation 6b
|
||||
m = ed + (mo - ed) / 10.0 ** kd # Equation 8
|
||||
|
||||
return m
|
||||
|
||||
|
||||
def calculate_ffmc(wm: WeatherMetrics, f0: float) -> float:
|
||||
"""Return the Fine Fuel Moisture Code (FFMC) based on the measurements in wm and the previous
|
||||
day's FFMC in f0.
|
||||
"""
|
||||
# Calculate the fine fuel moisture content from the previous day
|
||||
mo = (147.2 * (101.0 - f0)) / (59.5 + f0) # Equation 1
|
||||
if wm.precipitation > 0.5:
|
||||
mo = calculate_mr(wm.precipitation, mo)
|
||||
|
||||
if mo > 250.0:
|
||||
mo = 250.0
|
||||
|
||||
# Equation 4 - Fine Fuel equilibrium moisture content (EMC) for drying
|
||||
ed = 0.942 * (wm.humidity ** .679) + (11.0 * math.exp((wm.humidity - 100.0) / 10.0)) + (
|
||||
0.18 * (21.1 - wm.temperature) * (1.0 - 1.0 / math.exp(0.1150 * wm.humidity)))
|
||||
|
||||
m = calculate_m(wm, ed, mo)
|
||||
|
||||
# Equation 10
|
||||
f = (59.5 * (250.0 - m)) / (147.2 + m)
|
||||
|
||||
if f > 101.0:
|
||||
f = 101.0
|
||||
elif f <= 0.0:
|
||||
f = 0.0
|
||||
|
||||
return f
|
||||
|
||||
|
||||
def calculate_dmr(precipitation: float, dm0: float) -> float:
|
||||
"""Calculate the Duff moisture content after rain based on the current precipitation and the
|
||||
previous day's DMC in dm0.
|
||||
|
||||
Preconditions:
|
||||
- precipitation > 1.5
|
||||
"""
|
||||
rw = 0.92 * precipitation - 1.27 # Equation 11
|
||||
wmi = 20.0 + 280.0 / math.exp(0.023 * dm0) # Equation 12
|
||||
|
||||
if dm0 <= 33.0:
|
||||
b = 100.0 / (0.5 + 0.3 * dm0) # Equation 13a
|
||||
else:
|
||||
if dm0 <= 65.0:
|
||||
b = 14.0 - 1.3 * math.log(dm0) # Equation 13b
|
||||
else:
|
||||
b = 6.2 * math.log(dm0) - 17.2 # Equation 13c
|
||||
|
||||
return wmi + (1000 * rw) / (48.77 + b * rw) # Equation 14
|
||||
|
||||
|
||||
def calculate_dmc_k(temperature: float, humidity: float, month: int) -> float:
|
||||
"""Return the log drying rate in DMC based on the temperature, humidity, and month."""
|
||||
if temperature < -1.1:
|
||||
# Cannot use temperatures less than -1.1 in Equation 16
|
||||
temperature = -1.1
|
||||
|
||||
# Equations 16 and 17
|
||||
return 1.894 * (temperature + 1.1) * (100.0 - humidity) * (
|
||||
DMC_DAY_LENGTH_EFFECTIVE[month] * 0.0001)
|
||||
|
||||
|
||||
def calculate_dmc(wm: WeatherMetrics, dm0: float) -> float:
|
||||
"""Return the Duff Moisture Code (DMC) based on the measurements in wm and the previous day's
|
||||
DMC in dm0.
|
||||
"""
|
||||
if wm.precipitation <= 1.5:
|
||||
pr = dm0
|
||||
else:
|
||||
dmr = calculate_dmr(wm.precipitation, dm0)
|
||||
pr = 43.43 * (5.6348 - math.log(dmr - 20.0)) # Equation 15
|
||||
|
||||
# The DMC after rain cannot, theoretically, be less than 0; ensure it is at least 0
|
||||
pr = max(0.0, pr)
|
||||
|
||||
rk = calculate_dmc_k(wm.temperature, wm.humidity, wm.month)
|
||||
d = pr + rk
|
||||
|
||||
if d <= 1.0:
|
||||
d = 1.0
|
||||
return d
|
||||
|
||||
|
||||
def calculate_qr(precipitation: float, dc0: float) -> float:
|
||||
"""Return the moisture equivalent after rain based on the current precipitation and the
|
||||
previous day's DC in dc0.
|
||||
|
||||
Preconditions:
|
||||
- precipitation > 2.8
|
||||
"""
|
||||
rd = 0.83 * precipitation - 1.27 # Equation 18
|
||||
qo = 800.0 * math.exp(-dc0 / 400.0) # Equation 19
|
||||
qr = qo + 3.937 * rd # Equation 20
|
||||
|
||||
return qr
|
||||
|
||||
|
||||
def calculate_dc(wm: WeatherMetrics, dc0: float) -> float:
|
||||
"""Return the Drought Code (DC) based on the measurements in wm and the previous day's DC in
|
||||
dc0.
|
||||
"""
|
||||
temperature = wm.temperature
|
||||
if wm.temperature < -2.8:
|
||||
temperature = -2.8
|
||||
|
||||
v = 0.36 * (temperature + 2.8) + DC_DAY_LENGTH_FACTORS[wm.month] # Equation 22
|
||||
# The potential evapotranspiration cannot, theoretically, be less than 0; ensure it's at least 0
|
||||
v = max(0.0, v)
|
||||
|
||||
if wm.precipitation > 2.8:
|
||||
qr = calculate_qr(wm.precipitation, dc0)
|
||||
dr = 400 * math.log(800 / qr) # Equation 21
|
||||
return dr + 0.5 * v # Equation 23
|
||||
else:
|
||||
return dc0 + 0.5 * v # Equation 23
|
||||
|
||||
|
||||
def calculate_isi(wm: WeatherMetrics, ffmc: float) -> float:
|
||||
"""Return the Initial Spread Index (ISI) based on the measurements in wm and the current ffmc.
|
||||
"""
|
||||
mo = 147.2 * (101.0 - ffmc) / (59.5 + ffmc)
|
||||
ff = 19.115 * math.exp(mo * -0.1386) * (1.0 + (mo ** 5.31) / 49300000.0)
|
||||
|
||||
return ff * math.exp(0.05039 * wm.wind_speed)
|
||||
|
||||
|
||||
def calculate_bui(dmc: float, dc: float) -> float:
|
||||
"""Return the Buildup Index (BUI) based on the current dmc and the current dc.
|
||||
"""
|
||||
if dmc <= 0.4 * dc:
|
||||
b = (0.8 * dc * dmc) / (dmc + 0.4 * dc)
|
||||
else:
|
||||
b = dmc - (1.0 - 0.8 * dc / (dmc + 0.4 * dc)) * (0.92 + (0.0114 * dmc) ** 1.7)
|
||||
|
||||
if b < 0.0:
|
||||
b = 0.0
|
||||
|
||||
return b
|
||||
|
||||
|
||||
def calculate_fwi(isi: float, bui: float) -> float:
|
||||
"""Return the Fire Weather Index (FWI) based on the current isi and the current bui.
|
||||
"""
|
||||
if bui <= 80.0:
|
||||
f_d = 0.626 * bui ** 0.809 + 2.0 # Equation 28a
|
||||
else:
|
||||
f_d = 1000.0 / (25. + 108.64 * math.exp(-0.023 * bui)) # Equation 28b
|
||||
|
||||
bb = 0.1 * isi * f_d # Equation 29
|
||||
if bb <= 1.0:
|
||||
return bb # Equation 30b
|
||||
else:
|
||||
return math.exp(2.72 * (0.434 * math.log(bb)) ** 0.647) # Equation 30a
|
||||
@@ -0,0 +1,92 @@
|
||||
"""CSC110 Fall 2021 Assignment 3, Part 1: Text Generation, Uniformly Random Model (SOLUTIONS)
|
||||
|
||||
Instructions (READ THIS FIRST!)
|
||||
===============================
|
||||
Implement each of the functions in this file. As usual, do not change any function headers
|
||||
or preconditions. You do NOT need to add doctests.
|
||||
|
||||
You may create some additional helper functions to help break up your code into smaller parts.
|
||||
|
||||
Copyright and Usage Information
|
||||
===============================
|
||||
|
||||
This file is provided solely for the personal and private use of students
|
||||
taking CSC110 at the University of Toronto St. George campus. All forms of
|
||||
distribution of this code, whether as given or with any changes, are
|
||||
expressly prohibited. For more information on copyright for CSC110 materials,
|
||||
please consult our Course Syllabus.
|
||||
|
||||
This file is Copyright (c) 2021 Mario Badr and Tom Fairgrieve.
|
||||
"""
|
||||
import random
|
||||
|
||||
|
||||
def generate_text_uniform(model: dict[str, int], n: int) -> str:
|
||||
"""Return a string of n randomly-generated words chosen from the given model.
|
||||
|
||||
Each word in the returned string is separated by a single space.
|
||||
|
||||
Preconditions:
|
||||
- n >= 0
|
||||
- model != {}
|
||||
"""
|
||||
# Unpack model into two lists whose indexes correspond to one another
|
||||
words = []
|
||||
word_frequencies = []
|
||||
for word in model:
|
||||
words.append(word)
|
||||
word_frequencies.append(model[word])
|
||||
|
||||
new_words = random.choices(words, weights=word_frequencies, k=n)
|
||||
return str.join(' ', new_words)
|
||||
|
||||
|
||||
def create_model_uniform(text: str) -> dict[str, int]:
|
||||
"""Return a model of the words in text.
|
||||
|
||||
The model is a mapping of words to the number of times the word occurs in text. A "word"
|
||||
contains no spaces.
|
||||
|
||||
This function should return model that is valid input to generate_text_uniform.
|
||||
|
||||
Preconditions:
|
||||
- text != ''
|
||||
|
||||
IMPLEMENTATION NOTE: Use the str.split method to get a list of words.
|
||||
"""
|
||||
|
||||
|
||||
def run_example(filename: str, num_words: int) -> str:
|
||||
"""Run an example to demonstrate random text generation with num_words words based on the data
|
||||
in filename.
|
||||
|
||||
To call this function:
|
||||
- Make sure you see that the 'data' folder is in the same directory as this file
|
||||
- Use an argument for filename like: 'data/texts/sample_text_raw.txt'
|
||||
- Try out the other plaintext files in 'data/texts', too
|
||||
"""
|
||||
with open(filename) as f:
|
||||
file_text = f.read()
|
||||
|
||||
stripped_text = str.strip(file_text) # str.strip removes leading/trailing whitespace
|
||||
model_from_file = create_model_uniform(stripped_text)
|
||||
generated_words = generate_text_uniform(model_from_file, num_words)
|
||||
|
||||
return generated_words
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import python_ta
|
||||
import python_ta.contracts
|
||||
python_ta.contracts.DEBUG_CONTRACTS = False
|
||||
python_ta.contracts.check_all_contracts()
|
||||
|
||||
# When you are ready to check your work with python_ta, uncomment the following lines.
|
||||
# (Delete the "#" and space before each line.)
|
||||
# IMPORTANT: keep this code indented inside the "if __name__ == '__main__'" block
|
||||
# python_ta.check_all(config={
|
||||
# 'allowed-io': ['run_example'],
|
||||
# 'extra-imports': ['python_ta.contracts', 'random'],
|
||||
# 'max-line-length': 100,
|
||||
# 'disable': ['R1705', 'C0200']
|
||||
# })
|
||||
@@ -0,0 +1,137 @@
|
||||
"""CSC110 Fall 2021 Assignment 3, Part 2: Text Generation, One-Word Context Model (SOLUTIONS)
|
||||
|
||||
Instructions (READ THIS FIRST!)
|
||||
===============================
|
||||
Implement each of the functions in this file. As usual, do not change any function headers
|
||||
or preconditions. You do NOT need to add doctests.
|
||||
|
||||
You may create some additional helper functions to help break up your code into smaller parts.
|
||||
|
||||
Copyright and Usage Information
|
||||
===============================
|
||||
|
||||
This file is provided solely for the personal and private use of students
|
||||
taking CSC110 at the University of Toronto St. George campus. All forms of
|
||||
distribution of this code, whether as given or with any changes, are
|
||||
expressly prohibited. For more information on copyright for CSC110 materials,
|
||||
please consult our Course Syllabus.
|
||||
|
||||
This file is Copyright (c) 2021 Mario Badr and Tom Fairgrieve.
|
||||
"""
|
||||
import random
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Question 2
|
||||
###############################################################################
|
||||
def update_follow_list(model: dict[str, list[str]], word: str, follow_word: str) -> None:
|
||||
"""Add follow_word and, when applicable, word to model.
|
||||
|
||||
If word is not already present in model, add it to the model with the follow list
|
||||
[follow_word]. Otherwise, add follow_word to the follow list of word.
|
||||
"""
|
||||
|
||||
|
||||
def create_model_owc(text: str) -> tuple[int, dict[str, list[str]]]:
|
||||
"""Return a tuple of the number of words in text and one-word context model of the given text,
|
||||
as described in the handout.
|
||||
|
||||
Your implementation MUST use the update_follow_list helper function. We recommend completing
|
||||
that function first, as it's simpler and will get you thinking about how to use it here.
|
||||
|
||||
Preconditions:
|
||||
- text != ''
|
||||
- len(str.split(text)) > 1
|
||||
"""
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Question 3
|
||||
###############################################################################
|
||||
def choose_from_keys(transitions: dict[str, list[str]]) -> str:
|
||||
"""Return a random key from transitions.
|
||||
|
||||
Preconditions:
|
||||
- transitions != {}
|
||||
"""
|
||||
|
||||
|
||||
def choose_from_follow_list(key: str, transitions: dict[str, list[str]]) -> str:
|
||||
"""Return a random word from the follow list in transitions that is associated with key.
|
||||
|
||||
Also remove one occurrence of the random word from the follow list. If the follow list is then
|
||||
empty, remove the key-value pair from transitions.
|
||||
|
||||
Preconditions:
|
||||
- transitions != {}
|
||||
- key in transitions
|
||||
- transitions[key] != []
|
||||
"""
|
||||
|
||||
|
||||
def generate_text_owc(count: int, transitions: dict[str, list[str]]) -> str:
|
||||
"""Return a string containing (count - 1) randomly generated words based on the data in
|
||||
transitions, which maps words to a list of words that follow it.
|
||||
|
||||
A randomly generated word is selected from the keys of transitions when:
|
||||
- it is the first word; or
|
||||
- the last randomly generated word is not a key in transitions.
|
||||
|
||||
A randomly generated word is selected from the follow list of a key in transitions when the
|
||||
last randomly generated word is a key in transitions. In addition, one occurrence of the word
|
||||
selected from the follow list is removed from the follow list (i.e., mutation). When there are
|
||||
no words in the follow list for a key, the key-value pair is also removed from transitions
|
||||
(i.e., mutation).
|
||||
|
||||
Your implementation MUST use the helper functions: choose_from_keys and choose_from_follow_list.
|
||||
We recommend completing these functions first, as they simpler and will get you thinking about
|
||||
how to use it here.
|
||||
|
||||
Preconditions:
|
||||
- model is in the format described by the assignment handout
|
||||
"""
|
||||
# ACCUMULATOR: a list of the randomly-generated words so far
|
||||
words_so_far = []
|
||||
|
||||
# We've provided this template as a starting point; you may modify it as necessary.
|
||||
current_word = ''
|
||||
for _ in range(count - 1):
|
||||
...
|
||||
|
||||
return str.join(' ', words_so_far)
|
||||
|
||||
|
||||
def run_example(filename: str) -> str:
|
||||
"""Run an example to demonstrate random text generation based on the data in filename.
|
||||
|
||||
To call this function:
|
||||
- Make sure you see that the 'data' folder is in the same directory as this file
|
||||
- Use an argument for filename like: 'data/texts/sample_text_raw.txt'
|
||||
- Try out the other plaintext files in 'data/texts', too
|
||||
"""
|
||||
with open(filename) as f:
|
||||
file_text = f.read()
|
||||
|
||||
stripped_text = str.strip(file_text) # str.strip removes leading/trailing whitespace
|
||||
word_count, transition_model = create_model_owc(stripped_text)
|
||||
generated_words = generate_text_owc(word_count, transition_model)
|
||||
|
||||
return generated_words
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import python_ta
|
||||
import python_ta.contracts
|
||||
python_ta.contracts.DEBUG_CONTRACTS = False
|
||||
python_ta.contracts.check_all_contracts()
|
||||
|
||||
# When you are ready to check your work with python_ta, uncomment the following lines.
|
||||
# (Delete the "#" and space before each line.)
|
||||
# IMPORTANT: keep this code indented inside the "if __name__ == '__main__'" block
|
||||
# python_ta.check_all(config={
|
||||
# 'allowed-io': ['run_example'],
|
||||
# 'extra-imports': ['python_ta.contracts', 'random'],
|
||||
# 'max-line-length': 100,
|
||||
# 'max-nested-blocks': 4,
|
||||
# 'disable': ['R1705', 'C0200']
|
||||
# })
|
||||
@@ -0,0 +1,189 @@
|
||||
"""CSC110 Fall 2020 Assignment 3, Part 3: Loops and Mutation Debugging Exercise
|
||||
|
||||
Instructions (READ THIS FIRST!)
|
||||
===============================
|
||||
|
||||
This Python module contains the program and tests described in Part 3.
|
||||
Run this file to see the pytest report containing at least one failing test.
|
||||
|
||||
While you are making small changes to this file, we will NOT run python_ta
|
||||
on this file when grading.
|
||||
|
||||
Copyright and Usage Information
|
||||
===============================
|
||||
|
||||
This file is provided solely for the personal and private use of students
|
||||
taking CSC110 at the University of Toronto St. George campus. All forms of
|
||||
distribution of this code, whether as given or with any changes, are
|
||||
expressly prohibited. For more information on copyright for CSC110 materials,
|
||||
please consult our Course Syllabus.
|
||||
|
||||
This file is Copyright (c) 2020 David Liu and Mario Badr.
|
||||
"""
|
||||
import csv
|
||||
import math
|
||||
|
||||
# Constant for different punctuation marks to remove from review strings.
|
||||
PUNCTUATION = '!\"#$%&()*+,-./:;<=>?@[]^_`{|}~'
|
||||
|
||||
# Constant representing VADER word intensities.
|
||||
# (This is a small subset of the full VADER lexicon.)
|
||||
WORD_TO_INTENSITY = {
|
||||
'adventure': 1.3,
|
||||
'amusing': 1.6,
|
||||
'brilliantly': 3.0,
|
||||
'comedy': 1.5,
|
||||
'excellent': 2.7,
|
||||
'guilty': -1.8,
|
||||
'magnificent': 2.9,
|
||||
'succeeded': 1.8,
|
||||
'terrible': -2.1
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Mario's Program
|
||||
###############################################################################
|
||||
def report_sentiment(review: str) -> tuple[str, float]:
|
||||
"""Return the VADER sentiment of the review in text.
|
||||
|
||||
The VADER sentiment is a tuple of the polarity, intensity of the review.
|
||||
"""
|
||||
# First clean the review text and split into a list of words.
|
||||
word_list = clean_text(review)
|
||||
|
||||
# Extract the number of times each VADER keyword appears in the review.
|
||||
occurrences = count_keywords(word_list)
|
||||
|
||||
# Calculate the average intensity of the keywords in the review.
|
||||
average_intensity = calculate_average_intensity(occurrences)
|
||||
|
||||
if average_intensity >= 0.05:
|
||||
return ('positive', average_intensity)
|
||||
elif average_intensity <= -0.05:
|
||||
return ('negative', average_intensity)
|
||||
else:
|
||||
return ('neutral', average_intensity)
|
||||
|
||||
|
||||
def clean_text(text: str) -> list[str]:
|
||||
"""Return text as a list of words that have been cleaned up.
|
||||
|
||||
Cleaning up involves:
|
||||
- removing punctuation
|
||||
- converting all letters to lowercase (because our VADER keywords
|
||||
are all written as lowercase)
|
||||
"""
|
||||
# Remove punctuation from text
|
||||
for p in PUNCTUATION:
|
||||
text = str.replace(text, p, ' ')
|
||||
|
||||
# Convert text to lowercase
|
||||
str.lower(text)
|
||||
|
||||
# Split text into words and return
|
||||
return str.split(text)
|
||||
|
||||
|
||||
def count_keywords(word_list: list[str]) -> dict[str, int]:
|
||||
"""Return a frequency mapping of the VADER keywords in text.
|
||||
"""
|
||||
# ACCUMULATOR: A mapping of keyword frequencies seen so far
|
||||
occurrences_so_far = {}
|
||||
|
||||
for word in word_list:
|
||||
if word in WORD_TO_INTENSITY:
|
||||
if word not in occurrences_so_far:
|
||||
occurrences_so_far[word] = 0
|
||||
occurrences_so_far[word] = occurrences_so_far[word] + 1
|
||||
|
||||
return occurrences_so_far
|
||||
|
||||
|
||||
def calculate_average_intensity(occurrences: dict[str, int]) -> float:
|
||||
"""Return the average intensity of the given keyword occurrences.
|
||||
|
||||
Preconditions:
|
||||
- occurrences != {}
|
||||
- all({occurrences[keyword] >= 1 for keyword in occurrences})
|
||||
"""
|
||||
num_keywords = sum([occurrences[word] for word in occurrences])
|
||||
total_intensity = sum([WORD_TO_INTENSITY[word] * occurrences[word]
|
||||
for word in occurrences])
|
||||
return total_intensity / num_keywords
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Tests for report_sentiment (THERE ARE NO ERRORS IN THIS PART)
|
||||
###############################################################################
|
||||
def read_critic_data(filename: str) -> str:
|
||||
"""Return the movie review stored in the given file.
|
||||
|
||||
The file is a CSV file with two rows, a header row and a row of actual
|
||||
movie review data. These files are based on real movie review data from Metacritic,
|
||||
though they have been altered slightly to fit this assignment.
|
||||
|
||||
There ARE NO ERRORS in this function; it's used for testing purposes only.
|
||||
"""
|
||||
with open(filename) as file:
|
||||
reader = csv.reader(file)
|
||||
|
||||
# Skip header row
|
||||
next(reader)
|
||||
|
||||
# Read the movie review, which is the last entry in the row
|
||||
row = next(reader)
|
||||
review = row[len(row) - 1]
|
||||
|
||||
return review
|
||||
|
||||
|
||||
def test_star_wars() -> None:
|
||||
"""Test that the review for Star Wars gives the correct polarity and intensity.
|
||||
|
||||
There is NO ERROR in this test.
|
||||
"""
|
||||
review = read_critic_data('data/reviews/review_star_wars.csv')
|
||||
|
||||
actual = report_sentiment(review)
|
||||
expected_polarity = 'positive'
|
||||
expected_intensity = 2.25
|
||||
assert actual[0] == expected_polarity
|
||||
assert math.isclose(actual[1], expected_intensity)
|
||||
|
||||
|
||||
def test_legally_blonde() -> None:
|
||||
"""Test that the review for Legally Blonde gives the correct polarity and intensity.
|
||||
|
||||
There is NO ERROR in this test.
|
||||
"""
|
||||
review = read_critic_data('data/reviews/review_legally_blonde.csv')
|
||||
|
||||
actual = report_sentiment(review)
|
||||
expected_polarity = 'positive'
|
||||
expected_intensity = 0.8333333333333333
|
||||
assert actual[0] == expected_polarity
|
||||
assert math.isclose(actual[1], expected_intensity)
|
||||
|
||||
|
||||
def test_transformers() -> None:
|
||||
"""Test that the review for Transformers gives the correct polarity and intensity.
|
||||
|
||||
There is NO ERROR in this test.
|
||||
"""
|
||||
review = read_critic_data('data/reviews/review_transformers.csv')
|
||||
|
||||
actual = report_sentiment(review)
|
||||
expected_polarity = 'negative'
|
||||
expected_intensity = -0.9
|
||||
assert actual[0] == expected_polarity
|
||||
assert math.isclose(actual[1], expected_intensity)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import python_ta.contracts
|
||||
python_ta.contracts.DEBUG_CONTRACTS = False
|
||||
python_ta.contracts.check_all_contracts()
|
||||
|
||||
import pytest
|
||||
pytest.main(['a3_part3.py', '-v'])
|
||||
@@ -0,0 +1,120 @@
|
||||
"""CSC110 Fall 2021 Assignment 3, Part 4: Forest Fires (SOLUTIONS)
|
||||
|
||||
Instructions (READ THIS FIRST!)
|
||||
===============================
|
||||
Implement each of the functions in this file. As usual, do not change any function headers
|
||||
or preconditions. You do NOT need to add doctests.
|
||||
|
||||
Copyright and Usage Information
|
||||
===============================
|
||||
|
||||
This file is provided solely for the personal and private use of students
|
||||
taking CSC110 at the University of Toronto St. George campus. All forms of
|
||||
distribution of this code, whether as given or with any changes, are
|
||||
expressly prohibited. For more information on copyright for CSC110 materials,
|
||||
please consult our Course Syllabus.
|
||||
|
||||
This file is Copyright (c) 2021 Mario Badr and Tom Fairgrieve.
|
||||
"""
|
||||
import csv
|
||||
import plotly.graph_objects as go
|
||||
|
||||
from a3_ffwi_system import WeatherMetrics, FfwiOutput
|
||||
import a3_ffwi_system as ffwi
|
||||
|
||||
|
||||
def load_data(filename: str) -> tuple[list[WeatherMetrics], list[FfwiOutput]]:
|
||||
"""Return a tuple of two parallel lists based on the data in filename. The first list contains
|
||||
WeatherMetrics. The second list contains the corresponding FfwiOutput.
|
||||
|
||||
The data in filename is in a csv format with 12 columns. The first six columns correspond to
|
||||
the month, day, temperature, relative humidity, wind speed, and precipitation, in that order.
|
||||
The last six columns correspond to the FFMC, DMC, DC, ISI, BUI, and FWI values that would be
|
||||
calculated based on the first six columns and the previous day's values.
|
||||
"""
|
||||
# ACCUMULATOR inputs_so_far: The WeatherMetrics parsed from filename so far
|
||||
inputs_so_far = []
|
||||
# ACCUMULATOR outputs_so_far: The FfwiOutputs parsed from filename so far
|
||||
outputs_so_far = []
|
||||
|
||||
with open(filename) as f:
|
||||
reader = csv.reader(f, delimiter=',')
|
||||
next(reader) # skip the header
|
||||
|
||||
for row in reader:
|
||||
assert len(row) == 12, 'Expected every row to contain 12 elements.'
|
||||
# row is a list of strings
|
||||
# Your task is to extract the relevant data from row and add it
|
||||
# to the accumulator.
|
||||
|
||||
return inputs_so_far, outputs_so_far
|
||||
|
||||
|
||||
def calculate_ffwi_outputs(readings: list[WeatherMetrics]) -> dict[tuple[int, int], FfwiOutput]:
|
||||
"""Return a dictionary mapping (month, day) tuples to their corresponding FfwiOutput based on
|
||||
the daily weather measurements found in readings.
|
||||
|
||||
Use the functions in a3_ffwi_system for initial FFMC, DMC, and DC values and to calculate each
|
||||
attribute needed for FfwiOutput.
|
||||
|
||||
Preconditions:
|
||||
- Every reading in readings has a unique (month, day) pair
|
||||
"""
|
||||
|
||||
|
||||
def get_xy_data(outputs: dict[tuple[int, int], FfwiOutput], attribute: str) -> \
|
||||
tuple[list[str], list[float]]:
|
||||
"""Return a tuple of two parallel lists. The first list contains the keys of outputs as
|
||||
strings in the format 'month, day'. The second list contains the corresponding value of
|
||||
the attribute of FfwiOutput.
|
||||
|
||||
You can access an attribute from a data class using the getattr built-in function. For example,
|
||||
>>> output = FfwiOutput(2.0, 3.0, 4.0, 5.0, 6.0, 7.0)
|
||||
>>> getattr(output, 'ffmc')
|
||||
2.0
|
||||
"""
|
||||
|
||||
|
||||
def plot_ffwi_attribute(outputs: dict[tuple[int, int], FfwiOutput], attribute: str) -> None:
|
||||
"""Plot an attribute from FfwiOutput as a time series.
|
||||
|
||||
Preconditions:
|
||||
- attribute in {'ffmc', 'dmc', 'dc', 'isi', 'bui', 'fwi'}
|
||||
- outputs != {}
|
||||
"""
|
||||
# Convert the outputs into parallel x and y lists
|
||||
x_data, y_data = get_xy_data(outputs, attribute)
|
||||
|
||||
# Create the figure
|
||||
fig = go.Figure()
|
||||
fig.add_trace(go.Scatter(x=x_data, y=y_data, name=attribute))
|
||||
|
||||
# Configure the figure
|
||||
fig.update_layout(title=f'Time Series of {attribute}',
|
||||
xaxis_title='(Month, Day)',
|
||||
yaxis_title=f'Calculated {attribute}')
|
||||
|
||||
# Show the figure in the browser
|
||||
fig.show()
|
||||
# Is the above not working for you? Comment it out, and uncomment the following:
|
||||
# fig.write_html('my_figure.html')
|
||||
# You will need to manually open the my_figure.html file created above.
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import python_ta
|
||||
import python_ta.contracts
|
||||
python_ta.contracts.DEBUG_CONTRACTS = False
|
||||
python_ta.contracts.check_all_contracts()
|
||||
|
||||
# When you are ready to check your work with python_ta, uncomment the following lines.
|
||||
# (Delete the "#" and space before each line.)
|
||||
# IMPORTANT: keep this code indented inside the "if __name__ == '__main__'" block
|
||||
# python_ta.check_all(config={
|
||||
# 'allowed-io': ['load_data'],
|
||||
# 'extra-imports': ['python_ta.contracts', 'csv', 'plotly.graph_objects', 'a3_ffwi_system'],
|
||||
# 'max-line-length': 100,
|
||||
# 'max-args': 6,
|
||||
# 'max-locals': 25,
|
||||
# 'disable': ['R1705'],
|
||||
# })
|
||||
@@ -0,0 +1,105 @@
|
||||
"""CSC110 Fall 2021 Assignment 3: Part 4 (Student Test Suite)
|
||||
|
||||
Instructions (READ THIS FIRST!)
|
||||
===============================
|
||||
Complete the unit tests in this file based on their docstring descriptions.
|
||||
|
||||
Copyright and Usage Information
|
||||
===============================
|
||||
|
||||
This file is provided solely for the personal and private use of students
|
||||
taking CSC110 at the University of Toronto St. George campus. All forms of
|
||||
distribution of this code, whether as given or with any changes, are
|
||||
expressly prohibited. For more information on copyright for CSC110 materials,
|
||||
please consult our Course Syllabus.
|
||||
|
||||
This file is Copyright (c) 2021 Mario Badr and Tom Fairgrieve.
|
||||
"""
|
||||
import pytest
|
||||
|
||||
from a3_part4 import load_data
|
||||
from a3_ffwi_system import WeatherMetrics, FfwiOutput
|
||||
|
||||
import a3_ffwi_system as ffwi
|
||||
|
||||
|
||||
class TestCalculateMr:
|
||||
"""A collection of unit tests for calculate_mr."""
|
||||
|
||||
def test_equation_3a_branch(self) -> None:
|
||||
"""Test the branch calculate_mr that contains Equation 3a."""
|
||||
# TODO: Complete this unit test and remove this TODO
|
||||
|
||||
def test_equation_3b_branch(self) -> None:
|
||||
"""Test the branch calculate_mr that contains Equation 3b."""
|
||||
# TODO: Complete this unit test and remove this TODO
|
||||
|
||||
|
||||
class TestCalculateM:
|
||||
"""A collection of unit tests for calculate_m."""
|
||||
|
||||
def test_no_mutation_mo_equals_ed(self) -> None:
|
||||
"""Test that calculate_m does not mutate the WeatherMetrics argument when mo == ed."""
|
||||
# TODO: Complete this unit test and remove this TODO
|
||||
|
||||
def test_no_mutation_mo_leq_ew(self) -> None:
|
||||
"""Test that calculate_m does not mutate the WeatherMetrics argument when mo <= ew."""
|
||||
# TODO: Complete this unit test and remove this TODO
|
||||
|
||||
def test_no_mutation_mo_greater_than_ew(self) -> None:
|
||||
"""Test that calculate_m does not mutate the WeatherMetrics argument when mo > ew."""
|
||||
# TODO: Complete this unit test and remove this TODO
|
||||
|
||||
def test_no_mutation_mo_greater_than_ed(self) -> None:
|
||||
"""Test that calculate_m does not mutate the WeatherMetrics argument when mo > ed."""
|
||||
# TODO: Complete this unit test and remove this TODO
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_data() -> tuple[list[WeatherMetrics], list[FfwiOutput]]:
|
||||
"""A pytest fixture containing the data in data/ffwi/sample_data.csv
|
||||
|
||||
NOTE: Do not change this function. Do not call this function directly. It is a pytest fixture,
|
||||
so pytest will call it automatically and pass it to test_ffmc_against_ground_truth below.
|
||||
"""
|
||||
return load_data('data/ffwi/sample_data.csv')
|
||||
|
||||
|
||||
def test_ffmc_against_ground_truth(sample_data) -> None:
|
||||
"""Test the correctness of calculate_ffmc, calculate_dmc, calculate_dc, calculate_isi,
|
||||
calculate_bui, and calculate_fwi based on sample_data.
|
||||
|
||||
Ensure that, for every WeatherMetric element in sample_data[0] passed to each of the calculate_
|
||||
functions mentioned above, the return value, rounded to the nearest decimal, matches the
|
||||
corresponding value from the FfwiOutput element in sample_data[1].
|
||||
|
||||
Hints:
|
||||
- You will need to use the built-in function round.
|
||||
- You may want to use pytest.approx since you are comparing float values.
|
||||
"""
|
||||
ffmc = ffwi.INITIAL_FFMC
|
||||
dmc = ffwi.INITIAL_DMC
|
||||
dc = ffwi.INITIAL_DC
|
||||
|
||||
inputs, outputs = sample_data
|
||||
# TODO: Complete this test and remove this TODO.
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pytest.main(['a3_part4_tests.py'])
|
||||
|
||||
# When you are ready to check your work with python_ta, uncomment the following lines.
|
||||
# (Delete the "#" and space before each line.)
|
||||
# IMPORTANT: keep this code indented inside the "if __name__ == '__main__'" block
|
||||
# import python_ta
|
||||
# import python_ta.contracts
|
||||
# python_ta.contracts.DEBUG_CONTRACTS = False
|
||||
# python_ta.contracts.check_all_contracts()
|
||||
# python_ta.check_all(config={
|
||||
# 'allowed-io': ['load_data'],
|
||||
# 'extra-imports': ['a3_ffwi_system', 'a3_part4', 'pytest'],
|
||||
# 'max-line-length': 100,
|
||||
# 'max-args': 6,
|
||||
# 'max-locals': 25,
|
||||
# 'disable': ['R1705', 'R0201', 'C0103', 'W0621', 'E9970'],
|
||||
# })
|
||||
@@ -0,0 +1,129 @@
|
||||
"""CSC110 Fall 2021 Assignment 3, Example Tests
|
||||
|
||||
Instructions (READ THIS FIRST!)
|
||||
===============================
|
||||
This Python module contains example tests you can run for Parts 1 and 2 of this assignment. Please
|
||||
note that passing all these tests does NOT mean you have a 100% correct solution.
|
||||
|
||||
Some of the tests are empty, consider completing them. Also consider adding more of your own tests.
|
||||
|
||||
Copyright and Usage Information
|
||||
===============================
|
||||
|
||||
This file is provided solely for the personal and private use of students
|
||||
taking CSC110 at the University of Toronto St. George campus. All forms of
|
||||
distribution of this code, whether as given or with any changes, are
|
||||
expressly prohibited. For more information on copyright for CSC110 materials,
|
||||
please consult our Course Syllabus.
|
||||
|
||||
This file is Copyright (c) 2021 Mario Badr and Tom Fairgrieve.
|
||||
"""
|
||||
import a3_part1
|
||||
import a3_part2
|
||||
|
||||
|
||||
class TestCreateModelUniform:
|
||||
"""Some example tests for A3 Part 1 - create_model_uniform."""
|
||||
|
||||
def test_two_words(self) -> None:
|
||||
"""Test that the correct model is produced when the text contains two words."""
|
||||
test_text = 'Hello, World!'
|
||||
expected = {'Hello,': 1, 'World!': 1}
|
||||
|
||||
assert a3_part1.create_model_uniform(test_text) == expected
|
||||
|
||||
# TODO: Consider adding more tests
|
||||
|
||||
|
||||
class TestUpdateFollowList:
|
||||
"""Some example tests for A3 Part 2 - update_follow_list."""
|
||||
|
||||
def test_empty(self) -> None:
|
||||
"""Test that an empty dictionary is mutated correctly."""
|
||||
test_model = {}
|
||||
a3_part2.update_follow_list(test_model, 'I', 'like')
|
||||
|
||||
assert test_model == {'I': ['like']}
|
||||
|
||||
def test_not_empty_key_exists(self) -> None:
|
||||
"""Test that a non-empty dictionary is mutated correctly when the key already exists."""
|
||||
test_model = {'I': ['like']}
|
||||
a3_part2.update_follow_list(test_model, 'I', 'really')
|
||||
|
||||
assert test_model == {'I': ['like', 'really']}
|
||||
|
||||
def test_not_empty_key_does_not_exist(self) -> None:
|
||||
"""Test that a non-empty dictionary is mutated correctly when the key already exists."""
|
||||
# TODO: Consider completing this test based on its docstring
|
||||
test_model = {'I': ['like']}
|
||||
a3_part2.update_follow_list(test_model, 'like', 'chocolate')
|
||||
|
||||
assert test_model == {'I': ['like'], 'like': ['chocolate']}
|
||||
|
||||
# TODO: Consider adding more tests
|
||||
|
||||
|
||||
class TestCreateModelOwc:
|
||||
"""Some example tests for A3 Part 2 - create_model_owc."""
|
||||
|
||||
def test_two_words(self) -> None:
|
||||
"""Test that the correct model is produced when the text contains two words."""
|
||||
test_text = 'Hello, World!'
|
||||
|
||||
expected_word_count = 2
|
||||
expected_model = {'Hello,': ['World!']}
|
||||
|
||||
actual_word_count, actual_model = a3_part2.create_model_owc(test_text)
|
||||
assert actual_word_count == expected_word_count
|
||||
assert actual_model == expected_model
|
||||
|
||||
# TODO: Consider adding more tests
|
||||
|
||||
|
||||
class TestChooseFromKeys:
|
||||
"""Some example tests for A3 Part 2 - choose_from_keys."""
|
||||
|
||||
def test_one_possibility(self) -> None:
|
||||
"""Test that the only possible key is returned."""
|
||||
test_transitions = {'The': ['cat']}
|
||||
|
||||
assert a3_part2.choose_from_keys(test_transitions) == 'The'
|
||||
|
||||
def test_two_possibilities(self) -> None:
|
||||
"""Test that one of two possible keys is returned."""
|
||||
test_transitions = {'The': ['cat'], 'cat': ['in']}
|
||||
possibilities = {'The', 'cat'}
|
||||
|
||||
assert a3_part2.choose_from_keys(test_transitions) in possibilities
|
||||
|
||||
# TODO: Consider adding more tests
|
||||
|
||||
|
||||
class TestChooseFromFollowList:
|
||||
"""Some example tests for A3 Part 2 - choose_from_follow_list."""
|
||||
|
||||
def test_one_possibility(self) -> None:
|
||||
"""Test that the only possible value for a key is returned."""
|
||||
test_transitions = {'The': ['cat'], 'cat': ['in'], 'in': ['the'], 'the': ['hat.']}
|
||||
|
||||
assert a3_part2.choose_from_follow_list('The', test_transitions) == 'cat'
|
||||
|
||||
def test_one_possibility_mutation(self) -> None:
|
||||
"""Test that the dictionary is mutated correctly."""
|
||||
test_transitions = {'The': ['cat'], 'cat': ['in'], 'in': ['the'], 'the': ['hat.']}
|
||||
a3_part2.choose_from_follow_list('The', test_transitions)
|
||||
|
||||
assert test_transitions == {'cat': ['in'], 'in': ['the'], 'the': ['hat.']}
|
||||
|
||||
# TODO: Consider adding more tests
|
||||
|
||||
|
||||
class TestGenerateTextOwc:
|
||||
"""Some example tests for A3 Part 2 - generate_text_owc."""
|
||||
|
||||
# TODO: Consider adding more tests
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import pytest
|
||||
pytest.main(['a3_example_tests.py'])
|
||||
@@ -0,0 +1,50 @@
|
||||
Month,Day,Temp,Humidity,Wind,Rain,FFMC,DMC,DC,ISI,BUI,FWI
|
||||
4,13,17.0,42.0,25.0,0.0,87.7,8.5,19.0,10.9,8.5,10.1
|
||||
4,14,20.0,21.0,25.0,2.4,86.2,10.4,23.6,8.8,10.4,9.3
|
||||
4,15,8.5,40.0,17.0,0.0,87.0,11.8,26.1,6.5,11.7,7.6
|
||||
4,16,6.5,25.0,6.0,0.0,88.8,13.2,28.2,4.9,13.1,6.2
|
||||
4,17,13.0,34.0,24.0,0.0,89.1,15.4,31.5,12.6,15.3,14.8
|
||||
4,18,6.0,40.0,22.0,0.4,88.7,16.5,33.5,10.7,16.4,13.5
|
||||
4,19,5.5,52.0,6.0,0.0,87.4,17.2,35.4,4.0,17.1,5.9
|
||||
4,20,8.5,46.0,16.0,0.0,87.4,18.5,37.9,6.6,18.4,9.7
|
||||
4,21,9.5,54.0,20.0,0.0,86.8,19.7,40.6,7.4,19.6,11.0
|
||||
4,22,7.0,93.0,14.0,9.0,29.9,10.1,29.5,0.0,10.9,0.0
|
||||
4,23,6.5,71.0,17.0,1.0,49.4,10.7,31.6,0.4,11.6,0.2
|
||||
4,24,6.0,59.0,17.0,0.0,67.3,11.4,33.7,1.3,12.3,0.9
|
||||
4,25,13.0,52.0,4.0,0.0,77.8,13.0,37.0,1.1,13.9,0.8
|
||||
4,26,15.5,40.0,11.0,0.0,85.5,15.4,40.7,3.9,15.9,5.5
|
||||
4,27,23.0,25.0,9.0,0.0,91.5,19.8,45.8,8.4,19.8,12.2
|
||||
4,28,19.0,46.0,16.0,0.0,89.9,22.5,50.2,9.5,22.4,14.3
|
||||
4,29,18.0,41.0,20.0,0.0,90.0,25.2,54.4,11.7,25.1,17.7
|
||||
4,30,14.5,51.0,16.0,0.0,88.4,27.0,57.9,7.7,27.0,13.3
|
||||
5,1,14.5,69.0,11.0,0.0,85.7,28.3,63.0,4.0,28.2,8.0
|
||||
5,2,15.5,42.0,8.0,0.0,87.4,30.8,68.2,4.4,30.8,9.1
|
||||
5,3,21.0,37.0,8.0,0.0,89.4,34.5,74.3,5.9,34.4,12.3
|
||||
5,4,23.0,32.0,16.0,0.0,91.0,38.8,80.9,11.1,38.7,21.0
|
||||
5,5,23.0,32.0,14.0,0.0,91.2,43.1,87.4,10.3,43.0,21.1
|
||||
5,6,27.0,33.0,12.0,0.0,91.7,48.1,94.7,9.9,47.9,21.7
|
||||
5,7,28.0,17.0,27.0,0.0,95.2,54.5,102.1,34.5,54.3,52.6
|
||||
5,8,23.5,54.0,20.0,0.0,89.7,57.4,108.8,11.3,57.2,25.9
|
||||
5,9,16.0,50.0,22.0,12.2,62.2,29.9,91.8,1.4,33.0,3.0
|
||||
5,10,11.5,58.0,20.0,0.0,76.7,31.3,96.3,2.3,34.5,5.4
|
||||
5,11,16.0,54.0,16.0,0.0,83.5,33.4,101.6,3.8,36.7,8.9
|
||||
5,12,21.5,37.0,9.0,0.0,88.7,37.1,107.8,5.6,39.9,12.8
|
||||
5,13,14.0,61.0,22.0,0.2,86.7,38.7,112.8,8.1,41.6,17.3
|
||||
5,14,15.0,30.0,27.0,0.0,89.6,41.7,117.9,15.9,44.2,28.8
|
||||
5,15,20.0,23.0,11.0,0.0,92.1,45.9,123.9,10.1,47.7,21.9
|
||||
5,16,14.0,95.0,3.0,16.4,21.3,20.1,97.0,0.0,26.5,0.0
|
||||
5,17,20.0,53.0,4.0,2.8,51.0,18.3,103.0,0.2,25.3,0.2
|
||||
5,18,19.5,30.0,16.0,0.0,82.3,22.1,108.9,3.3,29.3,6.8
|
||||
5,19,25.5,51.0,20.0,6.0,75.4,16.4,106.4,2.1,23.7,3.8
|
||||
5,20,10.0,38.0,24.0,0.0,84.3,18.2,110.6,6.4,25.8,11.3
|
||||
5,21,19.0,27.0,16.0,0.0,90.3,22.1,116.4,10.0,29.9,17.2
|
||||
5,22,26.0,46.0,11.0,4.2,77.6,18.7,117.7,1.6,26.8,2.9
|
||||
5,23,30.0,38.0,22.0,0.0,90.2,23.8,125.5,13.4,32.3,22.0
|
||||
5,24,25.5,67.0,19.0,12.6,65.3,13.1,108.5,1.4,20.2,1.9
|
||||
5,25,12.0,53.0,28.0,11.8,55.4,7.7,91.6,1.2,12.8,0.8
|
||||
5,26,21.0,38.0,8.0,0.0,80.8,11.3,97.8,1.9,17.6,2.6
|
||||
5,27,13.0,70.0,20.0,3.8,61.7,8.4,97.9,1.2,13.8,0.9
|
||||
5,28,9.0,78.0,24.0,1.4,64.5,9.0,101.9,1.7,14.7,2.0
|
||||
5,29,11.0,54.0,16.0,0.0,77.6,10.5,106.3,2.0,16.8,2.8
|
||||
5,30,15.5,39.0,9.0,0.0,85.4,13.1,111.5,3.5,20.3,5.8
|
||||
5,31,18.0,36.0,5.0,0.0,88.5,16.3,117.1,4.4,24.2,7.9
|
||||
|
@@ -0,0 +1,2 @@
|
||||
critic_name,media,movie_title,review_date,individual_meta_score,text
|
||||
Kenneth Turan,Los Angeles Times,Legally Blonde,,50,"Guilty of squandering resources. Amusing as it goes about setting up its premise, in Witherspoon, the gifted veteran of ""Election"" and ""Pleasantville,"" it has an actress willing to throw herself completely into the part to excellent effect."
|
||||
|
@@ -0,0 +1,2 @@
|
||||
critic_name,media,movie_title,review_date,individual_meta_score,text
|
||||
,Variety,Star Wars: Episode IV - A New Hope,,100,"A magnificent film. George Lucas set out to make the biggest possible adventure fantasy out of his memories of serials and older action epics, and he succeeded brilliantly."
|
||||
|
@@ -0,0 +1,2 @@
|
||||
critic_name,media,movie_title,review_date,individual_meta_score,text
|
||||
Tasha Robinson,The A.V. Club,Transformers,,42,"Turns the franchise into a terrible, terrible '80s comedy."
|
||||
|
@@ -0,0 +1,542 @@
|
||||
You left with no goodbye,
|
||||
Not a single word was said,
|
||||
No final kiss to seal any seams,
|
||||
I had no idea of the state we were in,
|
||||
|
||||
I know I have a fickle heart and a bitterness,
|
||||
And a wandering eye, and heaviness in my head,
|
||||
|
||||
But don't you remember?
|
||||
Don't you remember?
|
||||
The reason you loved me before,
|
||||
Baby, please remember me once more,
|
||||
|
||||
When was the last time you thought of me?
|
||||
Or have you completely erased me from your memory?
|
||||
I often think about where I went wrong,
|
||||
The more I do, the less I know,
|
||||
|
||||
But I know I have a fickle heart and a bitterness,
|
||||
And a wandering eye, and a heaviness in my head,
|
||||
|
||||
But don't you remember?
|
||||
Don't you remember?
|
||||
The reason you loved me before,
|
||||
Baby, please remember me once more,
|
||||
|
||||
Gave you space so you could breathe,
|
||||
I kept my distance so you would be free,
|
||||
And hoped that you'd find the missing piece,
|
||||
To bring you back to me,
|
||||
|
||||
Why don't you remember?
|
||||
Don't you remember?
|
||||
The reason you loved me before,
|
||||
Baby, please remember me once more,
|
||||
|
||||
When will I see you again?
|
||||
on.
|
||||
|
||||
Daydreamer
|
||||
Sitting on the sea
|
||||
Soaking up the sun
|
||||
He is a real lover
|
||||
Of making up the past
|
||||
And feeling up his girl
|
||||
Like he's never felt her figure before
|
||||
|
||||
A jaw dropper
|
||||
Looks good when he walks
|
||||
Is the subject of their talk
|
||||
He would be hard to chase
|
||||
But good to catch
|
||||
And he could change the world
|
||||
With his hands behind his back, oh
|
||||
|
||||
You can find him sittin' on your doorstep
|
||||
Waiting for a surprise
|
||||
And he will feel like he's been there for hours
|
||||
And you can tell that he'll be there for life
|
||||
|
||||
Daydreamer
|
||||
With eyes that make you melt
|
||||
He lends his coat for shelter
|
||||
Plus he's there for you
|
||||
When he shouldn't be
|
||||
But he stays all the same
|
||||
Waits for you
|
||||
Then sees you through
|
||||
|
||||
There's no way I
|
||||
Could describe him
|
||||
What I'll say is
|
||||
Just what I'm hoping for
|
||||
|
||||
But I will find him sittin' on my doorstep
|
||||
Waiting for a surprise
|
||||
And he will feel like he's been there for hours
|
||||
And I can tell that he'll be there for life
|
||||
And I can tell that he'll be there for life
|
||||
|
||||
I heard that you're settled down
|
||||
That you found a girl and you're married now.
|
||||
I heard that your dreams came true.
|
||||
Guess she gave you things I didn't give to you.
|
||||
|
||||
Old friend, why are you so shy?
|
||||
Ain't like you to hold back or hide from the light.
|
||||
|
||||
I hate to turn up out of the blue uninvited
|
||||
But I couldn't stay away, I couldn't fight it.
|
||||
I had hoped you'd see my face and that you'd be reminded
|
||||
That for me it isn't over.
|
||||
|
||||
Never mind, I'll find someone like you
|
||||
I wish nothing but the best for you too
|
||||
Don't forget me, I beg
|
||||
I remember you said,
|
||||
"Sometimes it lasts in love but sometimes it hurts instead,
|
||||
Sometimes it lasts in love but sometimes it hurts instead, "
|
||||
Yeah
|
||||
|
||||
You know how the time flies
|
||||
Only yesterday was the time of our lives
|
||||
We were born and raised
|
||||
In a summer haze
|
||||
Bound by the surprise of our glory days
|
||||
|
||||
I hate to turn up out of the blue uninvited
|
||||
But I couldn't stay away, I couldn't fight it.
|
||||
I'd hoped you'd see my face and that you'd be reminded
|
||||
That for me it isn't over.
|
||||
|
||||
Never mind, I'll find someone like you
|
||||
I wish nothing but the best for you too
|
||||
Don't forget me, I beg
|
||||
I remember you said,
|
||||
"Sometimes it lasts in love but sometimes it hurts instead."
|
||||
Yeah
|
||||
|
||||
Nothing compares
|
||||
No worries or cares
|
||||
Regrets and mistakes
|
||||
They are memories made.
|
||||
Who would have known how bittersweet this would taste?
|
||||
|
||||
Never mind, I'll find someone like you
|
||||
I wish nothing but the best for you
|
||||
Don't forget me, I beg
|
||||
I remember you said,
|
||||
"Sometimes it lasts in love but sometimes it hurts instead."
|
||||
|
||||
Never mind, I'll find someone like you
|
||||
I wish nothing but the best for you too
|
||||
Don't forget me, I beg
|
||||
I remember you said,
|
||||
"Sometimes it lasts in love but sometimes it hurts instead,
|
||||
Sometimes it lasts in love but sometimes it hurts instead."
|
||||
Yeah
|
||||
I let it fall, my heart,
|
||||
And as it fell you rose to claim it
|
||||
It was dark and I was over
|
||||
Until you kissed my lips and you saved me
|
||||
|
||||
My hands, they're strong
|
||||
But my knees were far too weak
|
||||
To stand in your arms
|
||||
Without falling to your feet
|
||||
|
||||
But there's a side to you
|
||||
That I never knew, never knew.
|
||||
All the things you'd say
|
||||
They were never true, never true,
|
||||
And the games you play
|
||||
You would always win, always win.
|
||||
|
||||
[Chorus:]
|
||||
But I set fire to the rain,
|
||||
Watched it pour as I touched your face,
|
||||
Well, it burned while I cried
|
||||
'Cause I heard it screaming out your name, your name!
|
||||
|
||||
When I lay with you
|
||||
I could stay there
|
||||
Close my eyes
|
||||
Feel you here forever
|
||||
You and me together
|
||||
Nothing is better
|
||||
|
||||
'Cause there's a side to you
|
||||
That I never knew, never knew,
|
||||
All the things you'd say,
|
||||
They were never true, never true,
|
||||
And the games you play
|
||||
You would always win, always win.
|
||||
|
||||
[Chorus:]
|
||||
But I set fire to the rain,
|
||||
Watched it pour as I touched your face,
|
||||
Well, it burned while I cried
|
||||
'Cause I heard it screaming out your name, your name!
|
||||
|
||||
I set fire to the rain
|
||||
And I threw us into the flames
|
||||
Where it felt something die
|
||||
'Cause I knew that that was the last time, the last time!
|
||||
|
||||
Sometimes I wake up by the door,
|
||||
That heart you caught must be waiting for you
|
||||
Even now when we're already over
|
||||
I can't help myself from looking for you.
|
||||
|
||||
[Chorus:]
|
||||
I set fire to the rain,
|
||||
Watched it pour as I touched your face,
|
||||
Well, it burned while I cried
|
||||
'Cause I heard it screaming out your name, your name
|
||||
|
||||
I set fire to the rain,
|
||||
And I threw us into the flames
|
||||
Where it felt something die
|
||||
'Cause I knew that that was the last time, the last time, oh, ohhhh!
|
||||
|
||||
Oh noooo
|
||||
Let it burn
|
||||
Oh oh ohhhh
|
||||
Let it burn
|
||||
Oh oh ohhhh
|
||||
Let it burn
|
||||
Oh oh ohhhh
|
||||
|
||||
|
||||
Wait, do you see my heart on my sleeve?
|
||||
It's been there for days on end and
|
||||
It's been waiting for you to open up
|
||||
Yours too baby, come on now
|
||||
I'm trying to tell you just how
|
||||
I'd like to hear the words roll out of your mouth finally
|
||||
Say that it's always been me
|
||||
|
||||
This made you feel a way you've never felt before
|
||||
And I'm all you need and that you never want more
|
||||
Then you'd say all of the right things without a clue
|
||||
But you'd save the best for last
|
||||
Like I'm the one for you
|
||||
|
||||
You should know that you're just a temporary fix
|
||||
This isn't a routine with you it don't mean that much to me
|
||||
You're just a filler in the space that happened to be free
|
||||
How dare you think you'd get away with trying to play me
|
||||
|
||||
Why is it every time I think I've tried my hardest
|
||||
It turns out it ain't enough, you're still not mentioning love
|
||||
What am I supposed to do to make you want me properly?
|
||||
I'm taking these chances and getting nowhere
|
||||
And though I'm trying my hardest you go back to her
|
||||
And I think that I know things may never change
|
||||
I'm still hoping one day I might hear you say
|
||||
|
||||
I make you feel a way you've never felt before
|
||||
And I'm all you need and that you never want more
|
||||
Then you'd say all of the right things without a clue
|
||||
But you'd save the best for last
|
||||
Like I'm the one for you
|
||||
|
||||
You should know that you're just a temporary fix
|
||||
This isn't a routine with you it don't mean that much to me
|
||||
You're just a filler in the space that happened to be free
|
||||
How dare you think you'd get away with trying to play me
|
||||
|
||||
But, despite the truth that I know
|
||||
I find it hard to let go and give up on you
|
||||
Seems I love the things you do
|
||||
Like the meaner you treat me more eager I am
|
||||
To persist with this heartbreak, running around
|
||||
And I will do until I find myself with you and
|
||||
|
||||
Make you feel a way you've never felt before
|
||||
And be all you need so that you'll never want more
|
||||
And you'll say all of the right things without a clue
|
||||
And you'll be the one for me and me the one for you
|
||||
|
||||
I've made up my mind,
|
||||
Don't need to think it over
|
||||
If I'm wrong, I am right
|
||||
Don't need to look no further,
|
||||
This ain't lust
|
||||
I know this is love
|
||||
But, if I tell the world
|
||||
I'll never say enough
|
||||
'cause it was not said to you
|
||||
And that's exactly what I need to do
|
||||
If I end up with you
|
||||
|
||||
[Chorus]
|
||||
Should I give up,
|
||||
Or should I just keep chasin' pavements?
|
||||
Even if it leads nowhere
|
||||
Or would it be a waste
|
||||
Even if I knew my place
|
||||
Should I leave it there
|
||||
Should I give up,
|
||||
Or should I just keep chasin' pavements
|
||||
Even if it leads nowhere
|
||||
|
||||
I build myself up
|
||||
And fly around in circles
|
||||
Waitin' as my heart drops
|
||||
And my back begins to tingle
|
||||
Finally, could this be it
|
||||
|
||||
[Chorus]
|
||||
Or should I give up
|
||||
Or should I just keep chasin' pavements
|
||||
Even if it leads nowhere
|
||||
Or would it be a waste
|
||||
Even if I knew my place
|
||||
Should I leave it there
|
||||
|
||||
Should I give up
|
||||
Or should I just keep chasin' pavements
|
||||
Even if it leads nowhere
|
||||
Or would it be a waste
|
||||
Even if I knew my place should I leave it there
|
||||
Should I give up
|
||||
Or should I just keep on chasin' pavements
|
||||
Should I just keep on chasin' pavements
|
||||
Ohh oh
|
||||
|
||||
[Chorus x2]
|
||||
elf today
|
||||
Singing out loud your name,
|
||||
You said I'm crazy,
|
||||
If I am I'm crazy for you.
|
||||
|
||||
Sometimes sitting in the dark
|
||||
Wishing you were here
|
||||
Turns me crazy,
|
||||
But it's you who makes me lose my head.
|
||||
|
||||
And every time I'm meant to be acting sensible
|
||||
You drift into my head
|
||||
And turn me into a crumbling fool.
|
||||
|
||||
Tell me to run and I'll race,
|
||||
If you want me to stop I'll freeze,
|
||||
And if you want me gone, I'll leave,
|
||||
Just hold me closer, baby,
|
||||
And make me crazy for you.
|
||||
Crazy for you.
|
||||
|
||||
Lately with this state I'm in
|
||||
I can't help myself but spin.
|
||||
I wish you'd come over,
|
||||
Send me spinning closer to you.
|
||||
|
||||
My oh my, how my blood boils,
|
||||
It's sweet taste for you,
|
||||
Strips me down bare
|
||||
And gets me into my favourite mood.
|
||||
|
||||
I keep on trying, fighting these feelings away,
|
||||
But the more I do,
|
||||
The crazier I turn into.
|
||||
|
||||
Pacing floors and opening doors,
|
||||
Hoping you'll walk through
|
||||
And save me boy,
|
||||
Because I'm too crazy for you.
|
||||
Crazy for you
|
||||
Right under my feet there's air made of bricks
|
||||
Pulls me down turns me weak for you
|
||||
I find myself repeating like a broken tune
|
||||
And I'm forever excusing your intentions
|
||||
And I give in to my pretendings
|
||||
Which forgive you each time
|
||||
Without me knowing
|
||||
They melt my heart to stone
|
||||
|
||||
And I hear your words that I made up
|
||||
You say my name like there could be an us
|
||||
I best tidy up my head I'm the only one in love
|
||||
I'm the only one in love
|
||||
|
||||
Each and every time I turn around to leave
|
||||
I feel my heart begin to burst and bleed
|
||||
So desperately I try to link it with my head
|
||||
But instead I fall back to my knees
|
||||
As you tear your way right through me
|
||||
I forgive you once again
|
||||
Without me knowing
|
||||
You've burnt my heart to stone
|
||||
|
||||
And I hear your words that I made up
|
||||
You say my name like there could be an us
|
||||
I best tidy up my head I'm the only one in love
|
||||
I'm the only one in love
|
||||
|
||||
Why do you steal my hand
|
||||
Whenever I'm standing my own ground
|
||||
You build me up, then leave me dead
|
||||
|
||||
Well I hear your words you made up
|
||||
I say your name like there should be an us
|
||||
I best tidy up my head I'm the only one in love
|
||||
I'm the only one in love
|
||||
|
||||
So little to say but so much time,
|
||||
Despite my empty mouth the words are in my mind.
|
||||
Please wear the face, the one where you smile,
|
||||
Because you lighten up my heart when I start to cry.
|
||||
|
||||
Forgive me first love, but I'm tired.
|
||||
I need to get away to feel again.
|
||||
Try to understand why,
|
||||
don't get so close to change my mind.
|
||||
Please wipe that look out of your eyes,
|
||||
it's bribing me to doubt myself;
|
||||
Simply, it's tiring.
|
||||
|
||||
This love has dried up and stayed behind,
|
||||
And if I stay I'll be a lie
|
||||
Then choke on words I'd always hide.
|
||||
Excuse me first love, but we're through.
|
||||
I need to taste a kiss from someone new.
|
||||
|
||||
Forgive me first love, but I'm too tired.
|
||||
I'm bored to say the least and I, I lack desire.
|
||||
Forgive me first love,
|
||||
Forgive me first love,
|
||||
Forgive me first love,
|
||||
Forgive me first love,
|
||||
Forgive me,
|
||||
Forgive me first love,
|
||||
Forgive me first love
|
||||
|
||||
Who wants to be right as rain
|
||||
It's better when something is wrong
|
||||
You get excitement in your bones
|
||||
And everything you do's a game
|
||||
When night comes and you're on your own
|
||||
You can say "I chose to be alone"
|
||||
Who wants to be right as rain
|
||||
It's harder when you're on top
|
||||
|
||||
'Cause when hard work don't pay off
|
||||
And I'm tired there ain't no room in my bed
|
||||
As far as I'm concerned
|
||||
So wipe that dirty smile off
|
||||
We won't be making up
|
||||
I've cried my heart out
|
||||
And now I've had enough of love
|
||||
|
||||
Who wants to be riding high
|
||||
When you'll just crumble back on down
|
||||
You give up everything you are
|
||||
And even then you don't get far
|
||||
They make believe that everything
|
||||
Is exactly what it seems
|
||||
But at least when you're at your worst
|
||||
You know how to feel things
|
||||
|
||||
See when hard work don't pay off and I'm tired
|
||||
There ain't no room in my bed
|
||||
As far as I'm concerned
|
||||
So wipe that dirty smile off
|
||||
We won't be making up
|
||||
I've cried my heart out
|
||||
And now I've had enough of love
|
||||
|
||||
Go ahead and still my heart
|
||||
To make me cry again
|
||||
'Cause it will never hurt
|
||||
As much as it did then
|
||||
When we were both right
|
||||
And no one had blame
|
||||
But now I give up
|
||||
On this endless game
|
||||
|
||||
'Cause who wants to be right as rain
|
||||
It's better when something is wrong
|
||||
I get excitement in my bones
|
||||
Even thought everything's a strain
|
||||
When night comes and I'm on my own
|
||||
You should know I chose to be alone
|
||||
Who wants to be right as rain
|
||||
It's harder when you're on top
|
||||
|
||||
'Cause when hard work don't pay off and I'm tired
|
||||
There ain't no room in my bed
|
||||
As far as I'm concerned
|
||||
So wipe that dirty smile off
|
||||
We won't be making up
|
||||
I've cried my heart out
|
||||
And now I've had enough of love
|
||||
|
||||
When the rain is blowing in your face,
|
||||
And the whole world is on your case,
|
||||
I could offer you a warm embrace
|
||||
To make you feel my love.
|
||||
|
||||
When the evening shadows and the stars appear,
|
||||
And there is no one there to dry your tears,
|
||||
I could hold you for a million years
|
||||
To make you feel my love.
|
||||
|
||||
I know you haven't made your mind up yet,
|
||||
But I would never do you wrong.
|
||||
I've known it from the moment that we met,
|
||||
No doubt in my mind where you belong.
|
||||
|
||||
I'd go hungry; I'd go black and blue,
|
||||
I'd go crawling down the avenue.
|
||||
No, there's nothing that I wouldn't do
|
||||
To make you feel my love.
|
||||
|
||||
The storms are raging on the rolling sea
|
||||
And on the highway of regret.
|
||||
Though winds of change are blowing wild and free,
|
||||
You ain't seen nothing like me yet.
|
||||
|
||||
I could make you happy, make your dreams come true.
|
||||
Nothing that I wouldn't do.
|
||||
Go to the ends of the Earth for you,
|
||||
To make you feel my love
|
||||
To make you feel my love
|
||||
|
||||
u said I'm stubborn and I never give in
|
||||
I think you're stubborn 'cept you're always softening
|
||||
You say I'm selfish, I agree with you on that
|
||||
I think you're giving out in way too much in fact
|
||||
I say we've only known each other one year
|
||||
You say I've known you longer my dear
|
||||
You like to be so close, I like to be alone
|
||||
I like to sit on chairs and you prefer the floor
|
||||
Walking with each other, think we'll never match at all, but we do
|
||||
But we do, but we do, but we do
|
||||
|
||||
I thought I knew myself, somehow you know me more
|
||||
I've never known this, never before
|
||||
You're the first to make out whenever we are two
|
||||
I don't know who I'd be if I didn't know you
|
||||
You're so provocative, I'm so conservative
|
||||
You're so adventurous, I'm so very cautious, combining
|
||||
You think we would and we do, but we do, but we do, but we do
|
||||
|
||||
Instrumental bit!
|
||||
|
||||
Favouritism ain't my thing but,
|
||||
In this situation I'll be glad...
|
||||
|
||||
Favouritism ain't my thing but,in this situation I'll be glad to make an exception
|
||||
|
||||
You said I'm stubborn and I never give in
|
||||
I think you're stubborn 'cept you're always softening
|
||||
You say I'm selfish, I agree with you on that
|
||||
I think you're giving out in way too much in fact
|
||||
I say we've only known each other one year
|
||||
You say I've known you longer my dear
|
||||
You like to be so close, I like to be alone
|
||||
I like to sit on chairs and you prefer the floor
|
||||
Walking with each other, think we'll never match at all, but we do
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,340 @@
|
||||
[Roll up! Roll up for the magical mystery tour!
|
||||
Step right this way!]
|
||||
|
||||
Roll up, roll up for the mystery tour
|
||||
Roll up, roll up for the mystery tour
|
||||
Roll up (And that's an invitation), roll up for the mystery tour
|
||||
Roll up (To make a reservation), roll up for the mystery tour
|
||||
The magical mystery tour is waiting to take you away
|
||||
Waiting to take you away
|
||||
|
||||
Roll up, roll up for the mystery tour
|
||||
Roll up, roll up for the mystery tour
|
||||
Roll up (We've got everything you need), roll up for the mystery tour
|
||||
Roll up (Satisfaction guaranteed), roll up for the mystery tour
|
||||
The magical mystery tour is hoping to take you away
|
||||
Hoping to take you away
|
||||
|
||||
Mystery trip
|
||||
|
||||
Aaaah... the magical mystery tour
|
||||
Roll up, roll up for the mystery tour
|
||||
Roll up (And that's an invitation), roll up for the mystery tour
|
||||
Roll up (To make a reservation), roll up for the mystery tour
|
||||
The magical mystery tour is coming to take you away
|
||||
Coming to take you away
|
||||
The magical mystery tour is dying to take you away
|
||||
Dying to take you away, take you today
|
||||
|
||||
Day after day, alone on the hill
|
||||
The man with the foolish grin is keeping perfectly still
|
||||
But nobody wants to know him
|
||||
They can see that he's just a fool
|
||||
As he never gives an answer
|
||||
But the fool on the hill
|
||||
Sees the sun going down
|
||||
And the eyes in his head
|
||||
See the world spinning around
|
||||
|
||||
Well on the way, head in a cloud
|
||||
The man of a thousand voices talking percetly loud
|
||||
But nobody ever hears him
|
||||
Or the sound he appears to make
|
||||
And he never seems to notice
|
||||
But the fool on the hill
|
||||
Sees the sun going down
|
||||
And the eyes in his head
|
||||
See the world spinning around
|
||||
|
||||
And nobody seems to like him
|
||||
They can tell what he wants to do
|
||||
And he never shows his feelings
|
||||
But the fool on the hill
|
||||
Sees the sun going down
|
||||
And the eyes in his head
|
||||
See the world spinning around
|
||||
|
||||
He never listen to them
|
||||
He knows that they're the fools
|
||||
They don't like him
|
||||
The fool on the hill
|
||||
Sees the sun going down
|
||||
And the eyes in his head
|
||||
See the world spinning around
|
||||
|
||||
I am he as you are he as you are me
|
||||
And we are all together
|
||||
See how they run like pigs from a gun see how they fly
|
||||
I'm crying
|
||||
|
||||
Sitting on a cornflake waiting for the van to come
|
||||
Corporation teeshirt, stupid bloody Tuesday
|
||||
Man you been a naughty boy. You let your face grow long
|
||||
I am the eggman, they are the eggmen
|
||||
I am the walrus, goo goo goo joob
|
||||
|
||||
Mister City Policeman sitting, pretty little policemen in a row
|
||||
See how they fly like Lucy in the sky, see how they run
|
||||
I'm crying, I'm crying
|
||||
I'm crying, I'm crying
|
||||
|
||||
Yellow matter custard dripping from a dead dog's eye
|
||||
Crabalocker fishwife pornographic priestess
|
||||
Boy you been a naughty girl, you let your knickers down
|
||||
I am the eggman, they are the eggmen
|
||||
I am the walrus, goo goo goo joob
|
||||
|
||||
Sitting in an English garden waiting for the sun
|
||||
If the sun don't come
|
||||
You get a tan from standing in the English rain
|
||||
I am the eggman, they are the eggmen
|
||||
I am the walrus, goo goo goo joob goo goo goo goo joob
|
||||
|
||||
Expert textpert choking smokers
|
||||
Don't you think the joker laughs at you? (Ha ha ha! He he he! Ha ha ha!)
|
||||
See how they smile like pigs in a sty, see how they snied
|
||||
I'm crying
|
||||
|
||||
Semolina pilchard climbing up the Eiffel Tower
|
||||
Elementary penguin singing Hare Krishna
|
||||
Man you should have seen them kicking Edgar Alan Poe
|
||||
I am the eggman, they are the eggmen
|
||||
I am the walrus, goo goo goo joob goo goo goo joob
|
||||
Goo goo goo joob goo goo goo joob
|
||||
Goo gooooooooooo jooba jooba jooba jooba jooba jooba
|
||||
Jooba jooba
|
||||
Jooba jooba
|
||||
Jooba jooba
|
||||
|
||||
Let me take you down, cos I'm going to Strawberry Fields
|
||||
Nothing is real and nothing to get hung about
|
||||
Strawberry Fields forever
|
||||
|
||||
Living is easy with eyes closed
|
||||
Misunderstanding all you see
|
||||
It's getting hard to be someone but it all works out
|
||||
It doesn't matter much to me
|
||||
Let me take you down, cos I'm going to Strawberry Fields
|
||||
Nothing is real and nothing to get hung about
|
||||
Strawberry Fields forever
|
||||
|
||||
No one I think is in my tree
|
||||
I mean it must be high or low
|
||||
That is you can't you know tune in but it's all right
|
||||
That is I think it's not too bad
|
||||
Let me take you down, cos I'm going to Strawberry Fields
|
||||
Nothing is real and nothing to get hung about
|
||||
Strawberry Fields forever
|
||||
|
||||
Always, no sometimes, think it's me
|
||||
But you know I know when it's a dream
|
||||
I think I know I mean a "Yes" but it's all wrong
|
||||
That is I think I disagree
|
||||
Let me take you down, cos I'm going to Strawberry Fields
|
||||
Nothing is real and nothing to get hung about
|
||||
Strawberry Fields forever
|
||||
Strawberry Fields forever
|
||||
Strawberry Fields forever
|
||||
|
||||
You say yes, I say no
|
||||
You say stop and I say go go go, oh no
|
||||
You say goodbye and I say hello
|
||||
Hello hello
|
||||
I don't know why you say goodbye, I say hello
|
||||
Hello hello
|
||||
I don't know why you say goodbye, I say hello
|
||||
|
||||
I say high, you say low
|
||||
You say why and I say I don't know, oh no
|
||||
You say goodbye and I say hello
|
||||
(Hello goodbye hello goodbye) Hello hello
|
||||
(Hello goodbye) I don't know why you say goodbye, I say hello
|
||||
(Hello goodbye hello goodbye) Hello hello
|
||||
(Hello goodbye) I don't know why you say goodbye
|
||||
(Hello goodbye) I say hello/goodbye
|
||||
|
||||
Why why why why why why do you say goodbye goodbye, oh no?
|
||||
|
||||
You say goodbye and I say hello
|
||||
Hello hello
|
||||
I don't know why you say goodbye, I say hello
|
||||
Hello hello
|
||||
I don't know why you say goodbye, I say hello
|
||||
|
||||
You say yes (I say yes) I say no (But I may mean no)
|
||||
You say stop (I can stay) and I say go go go (Till it's time to go), oh
|
||||
Oh no
|
||||
You say goodbye and I say hello
|
||||
Hello hello
|
||||
I don't know why you say goodbye, I say hello
|
||||
Hello hello
|
||||
I don't know why you say goodbye, I say hello
|
||||
Hello hello
|
||||
I don't know why you say goodbye, I say hello hello
|
||||
|
||||
Hela heba helloa
|
||||
Hela heba helloa, cha cha cha
|
||||
Hela heba helloa, wooo
|
||||
Hela heba helloa, hela
|
||||
Hela heba helloa, cha cha cha
|
||||
Hela heba helloa, wooo
|
||||
Hela heba helloa, cha cah cah
|
||||
|
||||
Blackbird singing in the dead of night
|
||||
Take these broken wings and learn to fly
|
||||
All your life
|
||||
You were only waiting for this moment to arise.
|
||||
|
||||
Blackbird singing in the dead of night
|
||||
Take these sunken eyes and learn to see
|
||||
All your life
|
||||
You were only waiting for this moment to be free.
|
||||
|
||||
Blackbird fly Blackbird fly
|
||||
Into the light of the dark black night.
|
||||
|
||||
Blackbird fly Blackbird fly
|
||||
Into the light of the dark black night.
|
||||
|
||||
Blackbird singing in the dead of night
|
||||
Take these broken wings and learn to fly
|
||||
All your life
|
||||
You were only waiting for this moment to arise
|
||||
You were only waiting for this moment to arise
|
||||
You were only waiting for this moment to arise.
|
||||
|
||||
In the town where I was born
|
||||
Lived a man who sailed to sea
|
||||
And he told us of his life
|
||||
In the land of submarines
|
||||
|
||||
So we sailed up to the sun
|
||||
Till we found the sea of green
|
||||
And we lived beneath the waves
|
||||
In our yellow submarine
|
||||
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
|
||||
And our friends are all on board
|
||||
Many more of them live next door
|
||||
And the band begins to play
|
||||
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
|
||||
[Full speed ahead, Mr. Parker, full speed ahead!
|
||||
Full speed over here, sir!
|
||||
Action station! Action station!
|
||||
Aye, aye, sir, fire!
|
||||
Heaven! Heaven!]
|
||||
|
||||
As we live a life of ease (A life of ease)
|
||||
Everyone of us (Everyone of us) has all we need (Has all we need)
|
||||
Sky of blue (Sky of blue) and sea of green (Sea of green)
|
||||
In our yellow (In our yellow) submarine (Submarine, ha, ha)
|
||||
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
We all live in a yellow submarine
|
||||
Yellow submarine, yellow submarine
|
||||
|
||||
When I find myself in times of trouble
|
||||
Mother Mary comes to me
|
||||
Speaking words of wisdom, let it be
|
||||
And in my hour of darkness
|
||||
She is standing right in front of me
|
||||
Speaking words of wisdom, let it be
|
||||
Let it be, let it be
|
||||
Let it be, let it be
|
||||
Whisper words of wisdom, let it be
|
||||
|
||||
And when the broken hearted people
|
||||
Living in the world agree
|
||||
There will be an answer, let it be
|
||||
For though they may be parted
|
||||
There is still a chance that they will see
|
||||
There will be an answer, let it be
|
||||
Let it be, let it be
|
||||
Let it be, let it be
|
||||
Yeah there will be an answer, let it be
|
||||
Let it be, let it be
|
||||
Let it be, let it be
|
||||
Whisper words of wisdom, let it be
|
||||
|
||||
Let it be, let it be
|
||||
Ah let it be, yeah let it be
|
||||
Whisper words of wisdom, let it be
|
||||
And when the night is cloudy
|
||||
There is still a light that shines on me
|
||||
Shine on until tomorrow, let it be
|
||||
I wake up to the sound of music,
|
||||
Mother Mary comes to me
|
||||
Speaking words of wisdom, let it be
|
||||
Yeah let it be, let it be
|
||||
Let it be, yeah let it be
|
||||
Oh there will be an answer, let it be
|
||||
Let it be, let it be
|
||||
Let it be, yeah let it be
|
||||
Oh there will be an answer, let it be
|
||||
Let it be, let it be
|
||||
Ah let it be, yeah let it be
|
||||
Whisper words of wisdom, let it be
|
||||
|
||||
Hey Jude, don't make it bad
|
||||
Take a sad song and make it better
|
||||
Remember to let her into your heart
|
||||
Then you can start to make it better
|
||||
|
||||
Hey Jude, don't be afraid
|
||||
You were made to go out and get her
|
||||
The minute you let her under your skin
|
||||
Then you begin to make it better
|
||||
|
||||
And anytime you feel the pain, hey Jude, refrain
|
||||
Don't carry the world upon your shoulders
|
||||
For well you know that it's a fool who plays it cool
|
||||
By making his world a little colder
|
||||
Nah nah nah nah nah nah nah nah nah
|
||||
|
||||
Hey Jude, don't let me down
|
||||
You have found her, now go and get her
|
||||
Remember to let her into your heart
|
||||
Then you can start to make it better
|
||||
|
||||
So let it out and let it in, hey Jude, begin
|
||||
You're waiting for someone to perform with
|
||||
And don't you know that it's just you, hey Jude, you'll do
|
||||
The movement you need is on your shoulder
|
||||
Nah nah nah nah nah nah nah nah nah yeah
|
||||
|
||||
Hey Jude, don't make it bad
|
||||
Take a sad song and make it better
|
||||
Remember to let her under your skin
|
||||
Then you'll begin to make it
|
||||
Better better better better better better, oh
|
||||
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
Nah nah nah nah nah nah, nah nah nah, hey Jude
|
||||
@@ -0,0 +1,447 @@
|
||||
My lover's got humour
|
||||
She's the giggle at a funeral
|
||||
Knows everybody's disapproval
|
||||
I should've worshipped her sooner
|
||||
If the heavens ever did speak
|
||||
She's the last true mouthpiece
|
||||
Every Sunday's getting more bleak
|
||||
A fresh poison each week"We were born sick"
|
||||
You heard them say it
|
||||
My church offers no absolutes
|
||||
She tells me, "Worship in the bedroom"
|
||||
The only heaven I'll be sent to
|
||||
Is when I'm alone with you
|
||||
I was born sick, but I love it
|
||||
Command me to be well
|
||||
A-amen, amen, amen
|
||||
Take me to church
|
||||
I'll worship like a dog at the shrine of your lies
|
||||
I'll tell you my sins, and you can sharpen your knife
|
||||
Offer me that deathless death
|
||||
Good God, let me give you my life
|
||||
Take me to church
|
||||
I'll worship like a dog at the shrine of your lies
|
||||
I'll tell you my sins, and you can sharpen your knife
|
||||
Offer me that deathless death
|
||||
Good God, let me give you my life
|
||||
If I'm a pagan of the good times
|
||||
My lover's the sunlight
|
||||
To keep the Goddess on my side
|
||||
She demands a sacrifice
|
||||
Drain the whole sea
|
||||
Get something shiny
|
||||
Something meaty for the main course
|
||||
That's a fine-looking high horse
|
||||
What you got in the stable?
|
||||
We've a lot of starving faithful
|
||||
That looks tasty
|
||||
That looks plenty
|
||||
This is hungry work
|
||||
Take me to church
|
||||
I'll worship like a dog at the shrine of your lies
|
||||
I'll tell you my sins, so you can sharpen your knife
|
||||
Offer me my deathless death
|
||||
Good God, let me give you my life
|
||||
Take me to church
|
||||
I'll worship like a dog at the shrine of your lies
|
||||
I'll tell you my sins, so you can sharpen your knife
|
||||
Offer me my deathless death
|
||||
Good God, let me give you my life
|
||||
No masters or kings when the ritual begins
|
||||
There is no sweeter innocence than our gentle sin
|
||||
In the madness and soil of that sad earthly scene
|
||||
Only then I am human
|
||||
Only then I am clean
|
||||
Oh, oh, amen, amen, amen
|
||||
Take me to church
|
||||
I'll worship like a dog at the shrine of your lies
|
||||
I'll tell you my sins, and you can sharpen your knife
|
||||
Offer me that deathless death
|
||||
Good God, let me give you my life
|
||||
Take me to church
|
||||
I'll worship like a dog at the shrine of your lies
|
||||
I'll tell you my sins, and you can sharpen your knife
|
||||
Offer me that deathless death
|
||||
Good God, let me give you my life
|
||||
|
||||
|
||||
|
||||
Babe
|
||||
There's something tragic about you
|
||||
Something so magic about you
|
||||
Don't you agreeBabe
|
||||
There's something lonesome about you
|
||||
Something so wholesome about you
|
||||
Get closer to me..
|
||||
No tired sigh, no rolling eyes
|
||||
No irony
|
||||
No 'who cares', no vacant stare
|
||||
No time for me
|
||||
Honey you're familiar
|
||||
Like my mirror years ago
|
||||
Idealism sits in prison
|
||||
Chivalry fell on his sword
|
||||
Innocence died screaming
|
||||
Honey, ask me, I should know
|
||||
I slithered here from Eden
|
||||
Just to sit outside your doorBabe
|
||||
There's something wretched about this
|
||||
Something so precious about this
|
||||
Where to beginBabe
|
||||
there's something broken about this
|
||||
But I might be hoping about this
|
||||
Oh what a sin
|
||||
To the strand, a picnic planned for you and me
|
||||
A rope in hand, for your other man
|
||||
To hang from a treeHoney you're familiar
|
||||
Like my mirror years ago
|
||||
Idealism sits in prison
|
||||
Chivalry fell on his sword
|
||||
Innocence died screaming
|
||||
Honey, ask me, I should know
|
||||
I slithered here from Eden
|
||||
Just to sit outside your door
|
||||
Honey, you're familiar
|
||||
Like my mirror years ago
|
||||
Idealism sits in prison
|
||||
Chilvary fell on his sword
|
||||
Innocence died screaming
|
||||
Honey, ask me, I should know
|
||||
I slithered here from Eden
|
||||
Just to hide outside your door
|
||||
|
||||
|
||||
Boys workin on empty
|
||||
Is that the kinda way to face the burning heat?
|
||||
I just think about my baby
|
||||
I'm so full of love I could barely eat
|
||||
There's nothing sweeter than my baby
|
||||
I never want once from the cherry tree
|
||||
Cause my baby's sweet as can be
|
||||
She give me toothaches just from kissin me
|
||||
When, my, time comes around
|
||||
Lay me gently in the cold dark earth
|
||||
No grave can hold my body down
|
||||
I'll crawl home to her
|
||||
That's when my baby found me
|
||||
I was three days on a drunken sin
|
||||
I woke with her walls around me
|
||||
Nothin in her room but an empty crib
|
||||
And I was burnin up a fever
|
||||
I didn't care much how long I lived
|
||||
But I swear I thought I dreamed her
|
||||
She never asked me once about the wrong I did
|
||||
When, my, time comes around
|
||||
Lay me gently in the cold dark earth
|
||||
No grave can hold my body down
|
||||
I'll crawl home to her
|
||||
When, my, time comes around
|
||||
Lay me gently in the cold dark earth
|
||||
No grave can hold my body down
|
||||
I'll crawl home to her
|
||||
My baby never fret none
|
||||
About what my hands and my body done
|
||||
If the Lord don't forgive me
|
||||
I'd still have my baby and my babe would have me
|
||||
When I was kissing on my baby
|
||||
And she put her love down soft and sweet
|
||||
In the low lamp light I was free
|
||||
Heaven and hell were words to me
|
||||
When, my, time comes around
|
||||
Lay me gently in the cold dark earth
|
||||
No grave can hold my body down
|
||||
I'll crawl home to her
|
||||
When, my, time comes around
|
||||
Lay me gently in the cold dark earth
|
||||
No grave can hold my body down
|
||||
I'll crawl home to her
|
||||
|
||||
|
||||
When I was a child, I heard voices...
|
||||
Some would sing and some would scream
|
||||
You soon find you have few choices...
|
||||
I learned the voices died with me
|
||||
When I was a child I'd sit for hours
|
||||
Staring into open flame
|
||||
Something in it had a power
|
||||
Could barely tear my eyes away
|
||||
All you have is your fire...
|
||||
And the place you need to reach
|
||||
Don't you ever, tame your demon
|
||||
But always keep 'em on a leash
|
||||
When I was 16 my senses fooled me
|
||||
Thought gasoline was on my clothes
|
||||
I knew that something would always rule me...
|
||||
I knew the scent was mine alone
|
||||
All you have is your fire
|
||||
And the place you need to reach
|
||||
Don't you ever, tame your demon -
|
||||
But always keep 'em on a leash
|
||||
When I was a man I thought it ended
|
||||
When I knew loves perfect ache
|
||||
But my peace has always depended
|
||||
On all the ashes in my way
|
||||
All you have is your fire
|
||||
And the place you need to reach
|
||||
Don't you ever, tame your demons
|
||||
But always keep 'em on a leash...
|
||||
|
||||
|
||||
Her eyes and words are so icy
|
||||
Oh but she burns like rum on the fire
|
||||
Hot and fast and angry as she can be
|
||||
I walk my days on a wireit looks ugly, but it's clean
|
||||
Oh momma, don't fuss over me
|
||||
The way she tells me l'm hers and she is mine
|
||||
Open hand or close fist would be fine
|
||||
The blood is red and sweet as cherry wine
|
||||
Calls of guilty thrown at me
|
||||
All while she stains
|
||||
The sheets of some other
|
||||
Thrown at me so powerfully
|
||||
Just like she throws with the arm of her brother
|
||||
But I want it, it's a crime
|
||||
That she's not around most of the time
|
||||
The way she shows me I'm hers and she is mine
|
||||
Open hand or closed fist would be fine
|
||||
The blood is red and sweet as cherry wine
|
||||
Her fight and fury is fiery
|
||||
Oh but she loves like sleep to the freezing
|
||||
Sweet and right and merciful
|
||||
I'm all but washed in the tide of her breathing
|
||||
And it's worth it, it's divine
|
||||
And I have this some of the time
|
||||
The way she shows me I'm hers and she is mine
|
||||
Open hand or closed fist would be fine
|
||||
The blood is red and sweet as cherry wine
|
||||
|
||||
|
||||
So tired trying to see from behind the red in my eyes
|
||||
No better version of me I could pretend to be tonight
|
||||
So deep in this swill with the most familiar of swine
|
||||
For reasons wretched and divine
|
||||
She blows outta nowhere, roman candle of the wild
|
||||
Laughing away through my feeble disguise
|
||||
No other version of me I would rather be tonight.
|
||||
And, Lord, she found me just in time
|
||||
'Cause with my mid-youth crisis all said and done
|
||||
I need to be youthfully felt 'cause, God, I never felt young
|
||||
She's gonna save me,
|
||||
Call me "baby"
|
||||
Run her hands through my hair
|
||||
She'll know me crazy
|
||||
Soothe me daily
|
||||
Better yet she wouldn't care
|
||||
We'll steal her Lexus,
|
||||
Be detectives,
|
||||
Ride 'round picking up clues
|
||||
We'll name our children
|
||||
Jackie and Wilson
|
||||
Raise 'em on rhythm and blues
|
||||
Lord, it'd be great to find a place we could escape sometime
|
||||
Me and my Isis growing black irises in the sunshine
|
||||
Every version of me dead and buried in the yard outside
|
||||
Sit back and watch the world go by.
|
||||
Happy to lie back watch it burn and rust
|
||||
We tried the world, good God, it wasn't for us.
|
||||
She's gonna save me,
|
||||
Call me "baby"
|
||||
Run her hands through my hair
|
||||
She'll know me crazy,
|
||||
Soothe me daily
|
||||
Better yet she wouldn't care
|
||||
We'll steal her Lexus,
|
||||
Be detectives,
|
||||
Ride 'round picking up clues
|
||||
We'll name our children
|
||||
Jackie and Wilson,
|
||||
Raise 'em on rhythm and blues
|
||||
Cut clean from the dream at night let my mind reset
|
||||
Looking up from a cigarette, and she's already left
|
||||
I start digging up the yard for what's left of me and our little vignette
|
||||
For whatever poor soul is coming next
|
||||
She's gonna save me,
|
||||
Call me "baby"
|
||||
Run her hands through my hair
|
||||
She'll know me crazy,
|
||||
Soothe me daily
|
||||
Better yet she wouldn't care
|
||||
We'll steal her Lexus,
|
||||
Be detectives,
|
||||
Ride 'round picking up clues
|
||||
We'll name our children
|
||||
Jackie and Wilson
|
||||
Raise 'em on rhythm and blues
|
||||
|
||||
|
||||
|
||||
I have never known peace like the damp grass that yields to me
|
||||
I have never known hunger like these insects that feast on me
|
||||
A thousand teeth and yours among them, I know
|
||||
Our hungers appeased, our heart beats becoming slow
|
||||
We'll lay here for years or for hours
|
||||
Thrown here or found, to freeze or to thaw
|
||||
So long, we'd become the flowers
|
||||
Two corpses we were, two corpses I saw
|
||||
And they'd find us in a week
|
||||
When the weather gets hot
|
||||
After the insects have made their claim
|
||||
I'll be home with you, I'll be home with you
|
||||
I have never known sleep like this slumber that creeps to me
|
||||
I have never known colors like this morning reveals to me
|
||||
And you haven't moved an inch such that I would not know
|
||||
If you sleep always like this, flesh calmly going cold
|
||||
We'll lay here for years or for hours
|
||||
Your hand in my hand, so still and discreet
|
||||
So long, we'd become the flowers
|
||||
We'd feed well the land and worry the sheep
|
||||
And they'd find us in a week
|
||||
When the cattle'd show fear
|
||||
After the insects have made their claim
|
||||
After the foxes have known our taste
|
||||
I'll be home with you, I'll be home with you
|
||||
And they'd find us in a week
|
||||
When the weather gets hot
|
||||
And they'd find us in a week
|
||||
When the cattle'd show fear
|
||||
And they'd find us in a week
|
||||
When the buzzards get loud
|
||||
After the insects have made their claim
|
||||
After the foxes have known our taste
|
||||
After the raven has had his say
|
||||
I'll be home with you, I'll be home with you
|
||||
I'll be home with you, I'll be home with you
|
||||
I'll be home with you, I'll be home with you
|
||||
|
||||
|
||||
Don't take this the wrong way
|
||||
You knew who I was every step that I ran to you
|
||||
Only blue or black days
|
||||
Electing strange perfections in any stranger I choose.
|
||||
Would things be easier if there was a right way
|
||||
Honey there is no right way.
|
||||
And so I fall in love just a little ol' little bit
|
||||
Every day with someone new
|
||||
I fall in love just a little ol' little bit every day with someone new
|
||||
There's an art to life's distractions
|
||||
Somehow escapes the burning weight the art of scraping through
|
||||
Some like to imagine
|
||||
The dark thrills of someone else I guess any thrill will do.
|
||||
Would things be easier if there was a right way
|
||||
Honey there is no right way.
|
||||
And so I fall in love just a little ol' little bit
|
||||
Every day with someone new
|
||||
I fall in love just a little ol' little bit every day with someone new
|
||||
I wake at the first crink of morning
|
||||
And my heart's already sinned.
|
||||
How pure, how sweet a love, Aretha, that you would pray for him?
|
||||
'Cause God knows I fall in love just a little ol' little bit
|
||||
Every day with someone new
|
||||
I fall in love just a little ol' little bit every day with someone new
|
||||
I fall in love just a little ol' little bit every day.
|
||||
Love with every stranger the stranger the better
|
||||
I fall in love just a little ol' little bit every day with someone new
|
||||
|
||||
|
||||
I had a thought, dear
|
||||
However scary
|
||||
About that night
|
||||
The bugs and the dirt
|
||||
Why were you digging?
|
||||
What did you bury
|
||||
Before those hands pulled me
|
||||
From the earth?
|
||||
I will not ask you where you came from
|
||||
I will not ask and neither should you
|
||||
Honey just put your sweet lips on my lips
|
||||
We should just kiss like real people do
|
||||
I knew that look dear
|
||||
Eyes always seeking
|
||||
Was there in someone
|
||||
That dug long ago
|
||||
So I will not ask you
|
||||
Why you were creeping
|
||||
In some sad way I already know
|
||||
So I will not ask you where you came from
|
||||
I would not ask and neither would you
|
||||
Honey just put your sweet lips on my lips
|
||||
We should just kiss like real people do
|
||||
|
||||
|
||||
Never feel too good in crowds
|
||||
With folks around when they're playing
|
||||
The anthems of rape, culture loud
|
||||
Crude and proud creatures baying
|
||||
All I've ever done is hide
|
||||
From our times when you're near me
|
||||
Honey, when you kill the lights and kiss my eyes
|
||||
I feel like a person for a moment of my life
|
||||
But you don't know what hell you put me through
|
||||
To have someone kiss the skin that crawls from you
|
||||
To feel your weight in arms I'd never use
|
||||
It's the god that heroin prays to
|
||||
It feels good, girl, it feels good
|
||||
It feels good, girl, it feels good
|
||||
It feels good, girl, it feels good
|
||||
To be alone with you
|
||||
There are questions I can't ask
|
||||
Now at last the worst is over
|
||||
See the way you hold yourself
|
||||
Reel against your body's borders
|
||||
And I know that you hate this place
|
||||
Not a trace of me would argue
|
||||
Honey, we should run away, oh, someday
|
||||
Our baby and her momma
|
||||
And the damaged love she makes
|
||||
But I don't know what else that I would do
|
||||
Than try to kiss the skin that crawls from you
|
||||
Than feel your weight in arms I'd never use
|
||||
It's the god that heroin prays to
|
||||
It feels good, girl, it feels good
|
||||
It feels good, girl, it feels good
|
||||
It feels good, girl, it feels good
|
||||
To be alone with you
|
||||
It feels good, girl, it feels good
|
||||
It feels good, girl, it feels good
|
||||
It feels good, girl, it feels good
|
||||
To be alone with you
|
||||
|
||||
|
||||
Just a little rush, babe
|
||||
To feel dizzy, to derail the mind of me
|
||||
Just a little hush, babe
|
||||
Our veins are busy but my heart's in atrophy
|
||||
Any way to distract and sedate
|
||||
Adding shadows to the walls of the cave
|
||||
You and I nursing on a poison that never stung
|
||||
Our teeth and lungs are lined with the scum of it
|
||||
Some whiff of this, death and guts
|
||||
We are deaf, we are numb
|
||||
Free and young and we can feel none of it
|
||||
Something isn't right, babe
|
||||
I keep catching little words but the meaning's thin
|
||||
I'm somewhere outside my life, babe
|
||||
I keep scratching but somehow I can't get in
|
||||
So we're slaves to any semblance of touch
|
||||
Lord we should quit but we love it too much
|
||||
Sedated we're nursing on a poison that never stung
|
||||
Our teeth and lungs are lined with the scum of it
|
||||
Some whiff of this, death and guts
|
||||
We are deaf, we are numb
|
||||
Free and young and we can feel none of it
|
||||
Darlin', don't you, stand there watching, won't you
|
||||
Come and save me from it
|
||||
Darlin', don't you, join in, you're supposed to
|
||||
Drag me away from it
|
||||
Any way to distract and sedate
|
||||
Adding shadows to the walls of the cave
|
||||
You and I nursing on a poison that never stung
|
||||
Our teeth and lungs are lined with the scum of it
|
||||
Some whiff of this, death and guts
|
||||
We are deaf, we are numb
|
||||
Free and young and we can feel none of it
|
||||
Sedated we're nursing on a poison that never stung
|
||||
Our teeth and lungs are lined with the scum of it
|
||||
Some whiff of this, death and guts
|
||||
We are deaf, we are numb
|
||||
Free and young and we can feel none of it
|
||||
@@ -0,0 +1,70 @@
|
||||
Title: Take Me To Church
|
||||
|
||||
My lover's got humour
|
||||
She's the giggle at a funeral
|
||||
Knows everybody's disapproval
|
||||
I should've worshipped her sooner
|
||||
|
||||
If the heavens ever did speak
|
||||
She's the last true mouthpiece
|
||||
Every Sunday's getting more bleak
|
||||
A fresh poison each week
|
||||
|
||||
"We were born sick"
|
||||
You heard them say it
|
||||
|
||||
My church offers no absolutes
|
||||
She tells me, "Worship in the bedroom"
|
||||
The only heaven I'll be sent to
|
||||
Is when I'm alone with you
|
||||
|
||||
|
||||
Title: From Eden
|
||||
|
||||
Babe
|
||||
There's something tragic about you
|
||||
Something so magic about you
|
||||
Don't you agree
|
||||
|
||||
Babe
|
||||
There's something lonesome about you
|
||||
Something so wholesome about you
|
||||
Get closer to me..
|
||||
|
||||
No tired sigh, no rolling eyes
|
||||
No irony
|
||||
No 'who cares', no vacant stare
|
||||
No time for me
|
||||
|
||||
Honey you're familiar
|
||||
Like my mirror years ago
|
||||
Idealism sits in prison
|
||||
Chivalry fell on his sword
|
||||
Innocence died screaming
|
||||
|
||||
|
||||
Title: Work Song
|
||||
|
||||
Boys workin on empty
|
||||
Is that the kinda way to face the burning heat?
|
||||
I just think about my baby
|
||||
I'm so full of love I could barely eat
|
||||
There's nothing sweeter than my baby
|
||||
I never want once from the cherry tree
|
||||
Cause my baby's sweet as can be
|
||||
She give me toothaches just from kissin me
|
||||
|
||||
When, my, time comes around
|
||||
Lay me gently in the cold dark earth
|
||||
No grave can hold my body down
|
||||
I'll crawl home to her
|
||||
|
||||
That's when my baby found me
|
||||
I was three days on a drunken sin
|
||||
I woke with her walls around me
|
||||
Nothin in her room but an empty crib
|
||||
And I was burnin up a fever
|
||||
I didn't care much how long I lived
|
||||
But I swear I thought I dreamed her
|
||||
She never asked me once about the wrong I did
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.
|
||||
Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.
|
||||
A small river named Duden flows by their place and supplies it with the necessary regelialia.
|
||||
It is a paradisematic country, in which roasted parts of sentences fly into your mouth.
|
||||
Even the all powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.
|
||||
The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didn't listen. She packed her seven versalia, put her initial into the belt and made herself on the way.
|
||||
When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane.
|
||||
Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy. The copy warned the Little Blind Text, that where it came from it would have been rewritten a thousand times and everything that was left from its origin would be the word "and" and the Little Blind Text should turn around and return to its own, safe country.
|
||||
But nothing the copy said could convince her and so it didn't take long until a few insidious Copy Writers ambushed her, made her drunk with Longe and Parole and dragged her into their agency, where they abused her for their projects again and again. And if she hasn't been rewritten, then they are still using her.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,218 @@
|
||||
Its Dark in Here
|
||||
|
||||
I am writing these poems
|
||||
From inside a lion,
|
||||
And it's rather dark in here.
|
||||
|
||||
So please excuse the handwriting
|
||||
Which may not be too clear.
|
||||
|
||||
But this afternoon by the lion's cage
|
||||
I'm afraid I got too near.
|
||||
|
||||
And I'm writing these lines
|
||||
From inside a lion,
|
||||
And it's rather dark in here.
|
||||
|
||||
|
||||
Boa Constrictor
|
||||
|
||||
Oh, I'm being eaten
|
||||
By a boa constrictor,
|
||||
A boa constrictor,
|
||||
A boa constrictor,
|
||||
I'm being eaten by a boa constrictor,
|
||||
And I don't like it--one bit.
|
||||
|
||||
Well, what do you know?
|
||||
It's nibblin' my toe.
|
||||
|
||||
Oh, gee,
|
||||
It's up to my knee.
|
||||
|
||||
Oh my,
|
||||
It's up to my thigh.
|
||||
|
||||
Oh, fiddle,
|
||||
It's up to my middle.
|
||||
|
||||
Oh, heck,
|
||||
It's up to my neck.
|
||||
|
||||
Oh, dread,
|
||||
It's upmmmmmmmmmmffffffffff .
|
||||
.
|
||||
.
|
||||
|
||||
|
||||
Where the Sidewalk Ends
|
||||
|
||||
There is a place where the sidewalk ends
|
||||
And before the street begins,
|
||||
And there the grass grows soft and white,
|
||||
And there the sun burns crimson bright,
|
||||
And there the moon-bird rests from his flight
|
||||
To cool in the peppermint wind.
|
||||
|
||||
Let us leave this place where the smoke blows black
|
||||
And the dark street winds and bends.
|
||||
Past the pits where the asphalt flowers grow
|
||||
We shall walk with a walk that is measured and slow,
|
||||
And watch where the chalk-white arrows go
|
||||
To the place where the sidewalk ends.
|
||||
|
||||
Yes we'll walk with a walk that is measured and slow,
|
||||
And we'll go where the chalk-white arrows go,
|
||||
For the children, they mark, and the children, they know
|
||||
|
||||
|
||||
One Inch Tall
|
||||
|
||||
If you were only one inch tall, you'd ride a worm to school.
|
||||
|
||||
The teardrop of a crying ant would be your swimming pool.
|
||||
|
||||
A crumb of cake would be a feast
|
||||
And last you seven days at least,
|
||||
A flea would be a frightening beast
|
||||
If you were one inch tall.
|
||||
|
||||
|
||||
If you were only one inch tall, you'd walk beneath the door,
|
||||
And it would take about a month to get down to the store.
|
||||
|
||||
A bit of fluff would be your bed,
|
||||
You'd swing upon a spider's thread,
|
||||
And wear a thimble on your head
|
||||
If you were one inch tall.
|
||||
|
||||
|
||||
You'd surf across the kitchen sink upon a stick of gum.
|
||||
|
||||
You couldn't hug your mama, you'd just have to hug her thumb.
|
||||
|
||||
You'd run from people's feet in fright,
|
||||
To move a pen would take all night,
|
||||
(This poem took fourteen years to write--
|
||||
'Cause I'm just one inch tall).
|
||||
|
||||
|
||||
Rain
|
||||
|
||||
I opened my eyes
|
||||
And looked up at the rain,
|
||||
And it dripped in my head
|
||||
And flowed into my brain,
|
||||
And all that I hear as I lie in my bed
|
||||
Is the slishity-slosh of the rain in my head.
|
||||
|
||||
|
||||
I step very softly,
|
||||
I walk very slow,
|
||||
I can't do a handstand--
|
||||
I might overflow,
|
||||
So pardon the wild crazy thing I just said--
|
||||
I'm just not the same since there's rain in my head.
|
||||
|
||||
|
||||
|
||||
Whatif
|
||||
|
||||
|
||||
Last night, while I lay thinking here,
|
||||
some Whatifs crawled inside my ear
|
||||
and pranced and partied all night long
|
||||
and sang their same old Whatif song:
|
||||
Whatif I'm dumb in school?
|
||||
Whatif they've closed the swimming pool?
|
||||
Whatif I get beat up?
|
||||
Whatif there's poison in my cup?
|
||||
Whatif I start to cry?
|
||||
Whatif I get sick and die?
|
||||
Whatif I flunk that test?
|
||||
Whatif green hair grows on my chest?
|
||||
Whatif nobody likes me?
|
||||
Whatif a bolt of lightning strikes me?
|
||||
Whatif I don't grow talle?
|
||||
Whatif my head starts getting smaller?
|
||||
Whatif the fish won't bite?
|
||||
Whatif the wind tears up my kite?
|
||||
Whatif they start a war?
|
||||
Whatif my parents get divorced?
|
||||
Whatif the bus is late?
|
||||
Whatif my teeth don't grow in straight?
|
||||
Whatif I tear my pants?
|
||||
Whatif I never learn to dance?
|
||||
Everything seems well, and then
|
||||
the nighttime Whatifs strike again!
|
||||
|
||||
|
||||
I cannot go to school today!
|
||||
|
||||
I cannot go to school today!
|
||||
by Shel Silverstein
|
||||
"I cannot go to school today"
|
||||
Said little Peggy Ann McKay.
|
||||
"I have the measles and the mumps,
|
||||
A gash, a rash and purple bumps.
|
||||
|
||||
My mouth is wet, my throat is dry.
|
||||
I'm going blind in my right eye.
|
||||
My tonsils are as big as rocks,
|
||||
I've counted sixteen chicken pox.
|
||||
|
||||
And there's one more - that's seventeen,
|
||||
And don't you think my face looks green?
|
||||
My leg is cut, my eyes are blue,
|
||||
It might be the instamatic flu.
|
||||
|
||||
I cough and sneeze and gasp and choke,
|
||||
I'm sure that my left leg is broke.
|
||||
My hip hurts when I move my chin,
|
||||
My belly button's caving in.
|
||||
|
||||
My back is wrenched, my ankle's sprained,
|
||||
My 'pendix pains each time it rains.
|
||||
My toes are cold, my toes are numb,
|
||||
I have a sliver in my thumb.
|
||||
|
||||
My neck is stiff, my voice is weak,
|
||||
I hardly whisper when I speak.
|
||||
My tongue is filling up my mouth,
|
||||
I think my hair is falling out.
|
||||
|
||||
My elbow's bent, my spine ain't straight,
|
||||
My temperature is one-o-eight.
|
||||
My brain is shrunk, I cannot hear,
|
||||
There is a hole inside my ear.
|
||||
|
||||
I have a hangnail, and my heart is ...
|
||||
What? What's that? What's that you say?
|
||||
You say today is .............. Saturday?
|
||||
G'bye, I'm going out to play!"
|
||||
|
||||
|
||||
Messy Room
|
||||
|
||||
Whosever room this is should be ashamed!
|
||||
His underwear is hanging on the lamp.
|
||||
|
||||
His raincoat is there in the overstuffed chair,
|
||||
And the chair is becoming quite mucky and damp.
|
||||
|
||||
His workbook is wedged in the window,
|
||||
His sweater's been thrown on the floor.
|
||||
|
||||
His scarf and one ski are beneath the TV,
|
||||
And his pants have been carelessly hung on the door.
|
||||
|
||||
His books are all jammed in the closet,
|
||||
His vest has been left in the hall.
|
||||
|
||||
A lizard named Ed is asleep in his bed,
|
||||
And his smelly old sock has been stuck to the wall.
|
||||
|
||||
Whosever room this is should be ashamed!
|
||||
Donald or Robert or Willie or--
|
||||
Huh? You say it's mine? Oh, dear,
|
||||
I knew it looked familiar!
|
||||
@@ -0,0 +1,2 @@
|
||||
Did you get the sword from the old man on top of the waterfall?
|
||||
It's too dangerous to go alone from the old waterfall.
|
||||
|
Before Width: | Height: | Size: 536 KiB After Width: | Height: | Size: 536 KiB |
Reference in New Issue
Block a user