Commit 5321f8a0 by Yannine Alvarez

Repositorio de ejercicio de Poker 01 en kotlin

parents
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>
\ No newline at end of file
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Kotlin2JvmCompilerArguments">
<option name="jvmTarget" value="1.8" />
</component>
</project>
\ No newline at end of file
<component name="libraryTable">
<library name="KotlinJavaRuntime">
<CLASSES>
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-sources.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect-sources.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test-sources.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7-sources.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11 (3)" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Poker.iml" filepath="$PROJECT_DIR$/Poker.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="628f93ca-b7ce-4a63-90a4-4fc67deaa2b5" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Kotlin File" />
<option value="Class" />
</list>
</option>
</component>
<component name="ProjectId" id="1aUUEoXpf2zKLPGhVG9it1U3GrQ" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showExcludedFiles" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="android.sdk.path" value="$USER_HOME$/AppData/Local/Android/Sdk" />
</component>
<component name="RunManager" selected="Kotlin.PokerKt">
<configuration name="MyClass" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="MyClass" />
<module name="Poker" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Poker" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="Poker" />
<module name="Poker" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="PokerKt" type="JetRunConfigurationType" factoryName="Kotlin" temporary="true" nameIsGenerated="true">
<module name="Poker" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="MAIN_CLASS_NAME" value="PokerKt" />
<option name="WORKING_DIRECTORY" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Kotlin.PokerKt" />
<item itemvalue="Application.Poker" />
<item itemvalue="Application.MyClass" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="628f93ca-b7ce-4a63-90a4-4fc67deaa2b5" name="Default Changelist" comment="" />
<created>1586789556814</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1586789556814</updated>
</task>
<servers />
</component>
<component name="WindowStateProjectService">
<state x="413" y="109" key="#com.intellij.refactoring.typeMigration.ui.FailedConversionsDialog" timestamp="1586915044775">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="413" y="109" key="#com.intellij.refactoring.typeMigration.ui.FailedConversionsDialog/0.0.1366.728@0.0.1366.728" timestamp="1586915044775" />
<state width="1322" height="174" key="GridCell.Tab.0.bottom" timestamp="1587084922844">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="174" key="GridCell.Tab.0.bottom/0.0.1366.728@0.0.1366.728" timestamp="1587084922844" />
<state width="1322" height="174" key="GridCell.Tab.0.center" timestamp="1587084922843">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="174" key="GridCell.Tab.0.center/0.0.1366.728@0.0.1366.728" timestamp="1587084922843" />
<state width="1322" height="174" key="GridCell.Tab.0.left" timestamp="1587084922843">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="174" key="GridCell.Tab.0.left/0.0.1366.728@0.0.1366.728" timestamp="1587084922843" />
<state width="1322" height="174" key="GridCell.Tab.0.right" timestamp="1587084922843">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="174" key="GridCell.Tab.0.right/0.0.1366.728@0.0.1366.728" timestamp="1587084922843" />
<state width="1322" height="217" key="GridCell.Tab.1.bottom" timestamp="1586962978163">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="217" key="GridCell.Tab.1.bottom/0.0.1366.728@0.0.1366.728" timestamp="1586962978163" />
<state width="1322" height="217" key="GridCell.Tab.1.center" timestamp="1586962978162">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="217" key="GridCell.Tab.1.center/0.0.1366.728@0.0.1366.728" timestamp="1586962978162" />
<state width="1322" height="217" key="GridCell.Tab.1.left" timestamp="1586962978162">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="217" key="GridCell.Tab.1.left/0.0.1366.728@0.0.1366.728" timestamp="1586962978162" />
<state width="1322" height="217" key="GridCell.Tab.1.right" timestamp="1586962978162">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1322" height="217" key="GridCell.Tab.1.right/0.0.1366.728@0.0.1366.728" timestamp="1586962978162" />
<state x="92" y="92" width="1182" height="544" key="com.intellij.history.integration.ui.views.FileHistoryDialog" timestamp="1586975782483">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="92" y="92" width="1182" height="544" key="com.intellij.history.integration.ui.views.FileHistoryDialog/0.0.1366.728@0.0.1366.728" timestamp="1586975782483" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
</component>
</module>
\ No newline at end of file
/*REPOSITORIO GITLAB: https://phoebe.roshka.com/gitlab/yalvarez/kotlin-e004-poker*/
class Carta(val valor: Int, val palo: Char)
/*Probar para validar*/
const val CARAS = "23456789tjqka"
const val LETRAS = "shdc"
/* corregir esta funcion y agregar la funcion para obtener poker , full*/
fun isStraight(cards: List<Carta>): Boolean {
val sorted = cards.sortedBy { it.valor }
if (sorted[0].valor + 4 == sorted[4].valor) return true
if (sorted[4].valor == 14 && sorted[0].valor == 2 && sorted[3].valor == 5) return true
return false
}
/* probar funciones*/
fun esColor(cartas: List<Carta>): Boolean {
val suit = cartas[0].palo
if (cartas.drop(1).all { it.palo == suit }) return true
return false
}
fun jugada(mano: String): String {
val h = mano.toLowerCase()
val split = h.split(' ').filterNot { it == "" }.distinct()
if (split.size != 5) return "invalid"
val cartas = mutableListOf<Carta>()
for (s in split) {
if (s.length != 2) return "invalid"
val fIndex = CARAS.indexOf(s[0])
if (fIndex == -1) return "invalid"
val sIndex = LETRAS.indexOf(s[1])
if (sIndex == -1) return "invalid"
cartas.add(Carta(fIndex + 2, s[1]))
}
val groups = cartas.groupBy { it.valor }
when (groups.size) {
2 -> {
if (groups.any { it.value.size == 4 }) return " 4 tipos de cartas"
return "full-house"
}
3 -> {
if (groups.any { it.value.size == 3 }) return "3 tipos de cartas"
return "DOS PARES"
}
4 -> return "UN PAR"
else -> {
val color = esColor(cartas)
val straight = isStraight(cartas) //corregir
when {
color && straight -> return "straight-flush" //corregir
color -> return "color"
straight -> return "straight" //corregir
else -> return "Carta Alta"
}
}
}
}
fun main(args: Array<String>) {
val manos = arrayOf(
"2h 2d 2c kc qd",
"ah ah 7c 6c 4c"
)
for (mano in manos) {
println("Jugada: ${jugada(mano)}")
}
}
\ No newline at end of file
**2. Responder a las siguientes preguntas**
2.1. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener una escalera de color?
Para obtener la probabilidad de obtener una escalera a color se toma la combinación de las 52 cartas totales con las 5 cartas que se reparten, usando la formula de combinación en matemáticas se hace comb(52,5) --> (52,5)=5!/(52-5)!5! = 2598960 los casos posibles, y para obtener la probabilidad se hace en base al siguiente P=(40/2598960)*100, **P=0.0015%** de que salga escalera de color.
2.2. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un poker?
Para obtener la probabilidad de obtener el poker se realiza nuevamente la combinación de las 52 cartas con las 5 cartas que se reparten, la probabilidad se hace de acuerdo a los casos favorables que es de 624, P=(624/2598960)*100, **P=0.0240%** de que salga poker
2.3. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un full house?
Para obtener la probabilidad de obtener el poker se realiza nuevamente la combinación de las 52 cartas con las 5 cartas que se reparten, la probabilidad se hace de acuerdo a los casos favorables que es de 1872, P=(1872/2598960)*100, **P=0.0720%** de que salga full house.
2.4. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener una escalera?
Para obtener la probabilidad de obtener el poker se realiza nuevamente la combinación de las 52 cartas con las 5 cartas que se reparten, la probabilidad se hace de acuerdo a los casos favorables que es de 10200, P=(10200/2598960)*100, **P=0.3925%** de que salga escalera.
2.5. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un trio?
Para obtener la probabilidad de obtener el poker se realiza nuevamente la combinación de las 52 cartas con las 5 cartas que se reparten, la probabilidad se hace de acuerdo a los casos favorables que es de 56784, P=(56784/2598960)*100, **P=2.1849%** de que salga trío.
2.6. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un par doble?
Para obtener la probabilidad de obtener el poker se realiza nuevamente la combinación de las 52 cartas con las 5 cartas que se reparten, la probabilidad se hace de acuerdo a los casos favorables que es de 123552, P=(123552/2598960)*100, **P=4.75%** de que salga par doble.
2.7. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un par?
Para obtener la probabilidad de obtener el poker se realiza nuevamente la combinación de las 52 cartas con las 5 cartas que se reparten, la probabilidad se hace de acuerdo a los casos favorables que es de 1098240, P=(1098240/2598960)*100, **P=42.26%** de que salga par.
2.8. Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de no obtener ninguna de las jugadas anteriores?
Para obtener la probabilidad de obtener el poker se realiza nuevamente la combinación de las 52 cartas con las 5 cartas que se reparten, la probabilidad se hace de acuerdo a los casos favorables que es de 1302540, P=(1302540/2598960)*100, **P=50.12%** de no obtener ninguna de las jugadas anteriores.
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment