Spaces:
Sleeping
Sleeping
File size: 8,504 Bytes
9058b05 1777223 9058b05 1777223 9058b05 1777223 9058b05 1777223 9058b05 1777223 9058b05 1777223 9058b05 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
import random
from typing import List, Dict, Any
class FallbackQuestions:
"""Forhåndsdefinerte quiz-spørsmål som fallback"""
def __init__(self):
self.questions_db = {
"norsk_historie": [
{
"spørsmål": "Hvilket år ble Norge selvstendig fra Danmark?",
"alternativer": ["1814", "1905", "1821", "1830"],
"korrekt_svar": 0,
"forklaring": "Norge ble selvstendig fra Danmark i 1814 etter Napoleonskrigene og grunnloven ble vedtatt på Eidsvoll."
},
{
"spørsmål": "Hvem var Norges første konge etter selvstendigheten i 1905?",
"alternativer": ["Haakon VII", "Olav V", "Harald V", "Christian IV"],
"korrekt_svar": 0,
"forklaring": "Haakon VII ble Norges første konge etter unionsoppløsningen med Sverige i 1905."
},
{
"spørsmål": "Hvilket år ble Norge medlem av NATO?",
"alternativer": ["1945", "1949", "1952", "1955"],
"korrekt_svar": 1,
"forklaring": "Norge ble medlem av NATO i 1949, samme år som organisasjonen ble opprettet."
},
{
"spørsmål": "Hvem skrev teksten til Norges nasjonalsang?",
"alternativer": ["Henrik Ibsen", "Bjørnstjerne Bjørnson", "Knut Hamsun", "Rikard Nordraak"],
"korrekt_svar": 1,
"forklaring": "Bjørnstjerne Bjørnson skrev teksten til 'Ja, vi elsker dette landet' i 1859."
},
{
"spørsmål": "Hvilket år ble kvinnelig stemmerett innført i Norge?",
"alternativer": ["1907", "1913", "1920", "1945"],
"korrekt_svar": 1,
"forklaring": "Kvinnelig stemmerett ble innført i Norge i 1913, som et av de første landene i verden."
}
],
"oslo": [
{
"spørsmål": "Hva heter Oslos hovedflyplass?",
"alternativer": ["Fornebu", "Gardermoen", "Torp", "Rygge"],
"korrekt_svar": 1,
"forklaring": "Oslo lufthavn Gardermoen er Oslos og Norges hovedflyplass, åpnet i 1998."
},
{
"spørsmål": "Hvilken fjord ligger Oslo ved?",
"alternativer": ["Trondheimsfjorden", "Oslofjorden", "Hardangerfjorden", "Sognefjorden"],
"korrekt_svar": 1,
"forklaring": "Oslo ligger innerst i Oslofjorden, som strekker seg fra Skagerrak."
},
{
"spørsmål": "Hva heter Oslos berømte operahus?",
"alternativer": ["Operaen", "Den Norske Opera", "Oslo Opera House", "Operahuset"],
"korrekt_svar": 3,
"forklaring": "Operahuset i Oslo åpnet i 2008 og er kjent for sin unike arkitektur hvor man kan gå på taket."
},
{
"spørsmål": "Hva het Oslo før 1925?",
"alternativer": ["Kristiania", "Christiania", "Kristiansand", "Kristiansund"],
"korrekt_svar": 0,
"forklaring": "Oslo het Kristiania fra 1877 til 1925, da navnet ble endret tilbake til Oslo."
},
{
"spørsmål": "Hvilken park inneholder Vigelandsanlegget?",
"alternativer": ["Vigelandsparken", "Frognerparken", "Slottsparken", "Tøyenparken"],
"korrekt_svar": 1,
"forklaring": "Vigelandsanlegget ligger i Frognerparken, som er Oslos største park."
}
],
"bergen": [
{
"spørsmål": "Hva kalles Bergens berømte fiskemarked?",
"alternativer": ["Fisketorget", "Torget", "Bryggen", "Fiskemarkedet"],
"korrekt_svar": 0,
"forklaring": "Fisketorget i Bergen er et populært marked hvor man kan kjøpe fersk fisk og sjømat."
},
{
"spørsmål": "Hvilket fjell kan man ta Fløibanen opp til?",
"alternativer": ["Ulriken", "Fløyen", "Løvstakken", "Sandviksfjellet"],
"korrekt_svar": 1,
"forklaring": "Fløibanen er en kabelbane som går opp til Fløyen, 320 meter over havet."
},
{
"spørsmål": "Hva heter Bergens UNESCO-vernede bydel?",
"alternativer": ["Nordnes", "Bryggen", "Sandviken", "Møhlenpris"],
"korrekt_svar": 1,
"forklaring": "Bryggen i Bergen er på UNESCOs verdensarvliste og består av gamle hanseatiske bygninger."
},
{
"spørsmål": "Bergen kalles 'Porten til' hva?",
"alternativer": ["Fjordene", "Vestlandet", "Hardanger", "Sognefjorden"],
"korrekt_svar": 0,
"forklaring": "Bergen kalles 'Porten til fjordene' fordi den er utgangspunkt for mange fjordturer."
}
],
"general_norway": [
{
"spørsmål": "Hvor mange fylker har Norge?",
"alternativer": ["11", "15", "18", "19"],
"korrekt_svar": 0,
"forklaring": "Norge har 11 fylker etter fylkesreformen som trådte i kraft i 2020."
},
{
"spørsmål": "Hva er Norges nasjonaldag?",
"alternativer": ["16. mai", "17. mai", "1. mai", "7. juni"],
"korrekt_svar": 1,
"forklaring": "17. mai er Norges nasjonaldag og feirer grunnloven fra 1814."
},
{
"spørsmål": "Hvilken valuta brukes i Norge?",
"alternativer": ["Euro", "Norske kroner", "Svenske kroner", "Dollar"],
"korrekt_svar": 1,
"forklaring": "Norge bruker norske kroner (NOK) som valuta."
}
]
}
def get_questions(self, tema: str, språk: str, antall: int, type: str, vanskelighet: int) -> List[Dict[str, Any]]:
"""Hent fallback-spørsmål basert på tema"""
# Normaliser tema til nøkkel
tema_key = self._normalize_tema(tema)
# Hent spørsmål for tema
questions = self.questions_db.get(tema_key, self.questions_db["general_norway"])
# Tilpass til ønsket antall
if len(questions) >= antall:
selected = random.sample(questions, antall)
else:
# Hvis vi ikke har nok spørsmål, fyll opp med generelle
selected = questions.copy()
remaining = antall - len(selected)
general_questions = random.sample(self.questions_db["general_norway"], min(remaining, len(self.questions_db["general_norway"])))
selected.extend(general_questions)
# Tilpass vanskelighetsgrad (enkel implementasjon)
for question in selected:
if vanskelighet <= 2:
# Gjør spørsmål enklere ved å gi hint
question["forklaring"] = f"💡 Hint: {question['forklaring']}"
elif vanskelighet >= 4:
# Gjør spørsmål vanskeligere ved å fjerne hint
question["forklaring"] = question["forklaring"].replace("💡 Hint: ", "")
return selected[:antall]
def _normalize_tema(self, tema: str) -> str:
"""Normaliser tema til database-nøkkel"""
tema_lower = tema.lower()
if any(word in tema_lower for word in ["historie", "norsk historie", "norway history"]):
return "norsk_historie"
elif "oslo" in tema_lower:
return "oslo"
elif "bergen" in tema_lower:
return "bergen"
else:
return "general_norway"
def get_available_topics(self) -> List[str]:
"""Returner liste over tilgjengelige temaer"""
return [
"Norsk historie",
"Oslo",
"Bergen",
"Norge generelt"
] |