MCPcopy Create free account
hub / github.com/codecombat/codecombat / fillRandomParameters

Function fillRandomParameters

app/lib/level-generation.js:61–83  ·  view source on GitHub ↗
(parameters)

Source from the content-addressed store, hash-verified

59})
60
61function fillRandomParameters (parameters) {
62 parameters = parameters || {}
63
64 // Iterate the ParametersSchema, choosing a random enum value if it's an enum type or a numeric value between minimum and maximum if it's a number type
65 for (const [key, value] of Object.entries(ParametersSchema.properties)) {
66 if (parameters[key] !== undefined) {
67 continue
68 }
69
70 if (value.type === 'boolean') {
71 parameters[key] = !(Math.random() < 0.5)
72 } else if (value.enum) {
73 const enumLength = key === 'size' ? value.enum.length - 1 : value.enum.length
74 parameters[key] = value.enum[Math.floor(Math.random() * enumLength)]
75 } else if (value.type === 'integer') {
76 parameters[key] = Math.floor(Math.random() * (value.maximum - value.minimum + 1)) + value.minimum
77 } else if (value.type === 'number') {
78 parameters[key] = Math.floor(Math.random() * 10) / 10 * (value.maximum - value.minimum) + value.minimum
79 }
80 }
81
82 return parameters
83}
84
85function generateKeyForParameters (parameters) {
86 // Generate a key string to identify these parameter values, preserving the order of parameters defined in ParameterSchema

Callers 1

generateLevelFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected